精华内容
下载资源
问答
  • mysql数据库中允许select后含有非group by中的 SELECT bid, bName,price, bTypeId FROM book; /* 以下这条sql语句在mysql数据库中执行不会报错(虽然这样写不会报错,但查询结果没什么意义) MYSQLGROUP...

    mysql数据库中允许select后含有非group by中的列

    SELECT bid, bName,price, bTypeId FROM book;

    /*
    以下这条sql语句在mysql数据库中执行不会报错(虽然这样写不会报错,但查询结果没什么意义)
    MYSQL对 GROUP进行了非ANSI标准的扩展,允许这种select 后含有非 group by 中的列
    */
    SELECT bid, bName,price, bTypeId FROM book GROUP BY bTypeId;

    /*
    以下这条sql语句在mysql数据库中执行不会报错(虽然这样写不会报错,但查询结果没什么意义)
    MYSQL对 GROUP进行了非ANSI标准的扩展,允许这种select 后含有非 group by 中的列
    */

    展开全文
  • Mysql group by 中行转

    千次阅读 2015-10-22 09:33:48
    我们在进行group by 的时候,有些,我们不想进行聚合,比如上表的p,当我对match_id,expert_id,进行group by时,我想把p的值转成类似于这样 也就是行转,这时用到case when,语句如下 select match_id,...

    我们在进行group by 的时候,有些列,我们不想进行聚合,比如上表的p,当我对match_id,expert_id,进行group by时,我想把p的值转成列类似于这样


    也就是行转列,这时用到case when,语句如下

    select match_id,expert_id,

    sum(case  parent_id WHEN 1 then p end) p1,
    sum(case  parent_id WHEN 2 then p end) p2,
    sum(case  parent_id WHEN 3 then p end) p3,
    sum(case  parent_id WHEN 4 then p end) p4,
    sum(case  parent_id WHEN 5 then p ELSE 0 end) p5,
    sum(case  parent_id WHEN 6 then p ELSE 0 end) p6,
    sum(case WHEN parent_id is null then p ELSE 0 end) p7

    from Table group by match_id,expert_id;

    这句话表示对expert_id,match_id进行group by ,用case when 对p进行分类处理,通过parent_id 对p进行分类后,再用聚合函数,确保值唯一性,也可以使用其他聚合函数


    展开全文
  • mysql group by 分组

    千次阅读 2018-08-01 17:52:14
    MySQL GROUP BY 语句 GROUP BY 语句根据一个或多个对结果集进行分组。 在分组的上我们可以使用 COUNT, SUM, AVG,等函数。 GROUP BY 语法 SELECT column_name, function(column_name) FROM table_name WHERE...

    MySQL GROUP BY 语句

    GROUP BY 语句根据一个或多个列对结果集进行分组。

    在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。

    GROUP BY 语法

    SELECT column_name, function(column_name)
    FROM table_name
    WHERE column_name operator value
    GROUP BY column_name;

    实例演示

    本章节实例使用到了以下表结构及数据,使用前我们可以先将以下数据导入数据库中。

    SET NAMES utf8;
    SET FOREIGN_KEY_CHECKS = 0;
    
    -- ----------------------------
    --  Table structure for `employee_tbl`
    -- ----------------------------
    DROP TABLE IF EXISTS `employee_tbl`;
    CREATE TABLE `employee_tbl` (
      `id` int(11) NOT NULL,
      `name` char(10) NOT NULL DEFAULT '',
      `date` datetime NOT NULL,
      `singin` tinyint(4) NOT NULL DEFAULT '0' COMMENT '登录次数',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    --  Records of `employee_tbl`
    -- ----------------------------
    BEGIN;
    INSERT INTO `employee_tbl` VALUES ('1', '小明', '2016-04-22 15:25:33', '1'), ('2', '小王', '2016-04-20 15:25:47', '3'), ('3', '小丽', '2016-04-19 15:26:02', '2'), ('4', '小王', '2016-04-07 15:26:14', '4'), ('5', '小明', '2016-04-11 15:26:40', '4'), ('6', '小明', '2016-04-04 15:26:54', '2');
    COMMIT;
    
    SET FOREIGN_KEY_CHECKS = 1;

    导入成功后,执行以下 SQL 语句:

    mysql> set names utf8;
    mysql> SELECT * FROM employee_tbl;
    +----+--------+---------------------+--------+
    | id | name   | date                | singin |
    +----+--------+---------------------+--------+
    |  1 | 小明 | 2016-04-22 15:25:33 |      1 |
    |  2 | 小王 | 2016-04-20 15:25:47 |      3 |
    |  3 | 小丽 | 2016-04-19 15:26:02 |      2 |
    |  4 | 小王 | 2016-04-07 15:26:14 |      4 |
    |  5 | 小明 | 2016-04-11 15:26:40 |      4 |
    |  6 | 小明 | 2016-04-04 15:26:54 |      2 |
    +----+--------+---------------------+--------+
    6 rows in set (0.00 sec)

    接下来我们使用 GROUP BY 语句 将数据表按名字进行分组,并统计每个人有多少条记录:

    mysql> SELECT name, COUNT(*) FROM   employee_tbl GROUP BY name;
    +--------+----------+
    | name   | COUNT(*) |
    +--------+----------+
    | 小丽 |        1 |
    | 小明 |        3 |
    | 小王 |        2 |
    +--------+----------+
    3 rows in set (0.01 sec)

    使用 WITH ROLLUP

    WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…)。

    例如我们将以上的数据表按名字进行分组,再统计每个人登录的次数:

    mysql> SELECT name, SUM(singin) as singin_count FROM  employee_tbl GROUP BY name WITH ROLLUP;
    +--------+--------------+
    | name   | singin_count |
    +--------+--------------+
    | 小丽 |            2 |
    | 小明 |            7 |
    | 小王 |            7 |
    | NULL   |           16 |
    +--------+--------------+
    4 rows in set (0.00 sec)

    其中记录 NULL 表示所有人的登录次数。

    我们可以使用 coalesce 来设置一个可以取代 NUll 的名称,coalesce 语法:

    select coalesce(a,b,c);

    参数说明:如果a==null,则选择b;如果b==null,则选择c;如果a!=null,则选择a;如果a b c 都为null ,则返回为null(没意义)。

    以下实例中如果名字为空我们使用总数代替:

    mysql> SELECT coalesce(name, '总数'), SUM(singin) as singin_count FROM  employee_tbl GROUP BY name WITH ROLLUP;
    +--------------------------+--------------+
    | coalesce(name, '总数') | singin_count |
    +--------------------------+--------------+
    | 小丽                   |            2 |
    | 小明                   |            7 |
    | 小王                   |            7 |
    | 总数                   |           16 |
    +--------------------------+--------------+
    4 rows in set (0.01 sec)
    展开全文
  • MySQL优化GROUP BY方案

    2020-12-15 12:27:56
    此类查询的 EXPLAIN 输出显示 Extra的值为 Using index for group-by。 一。 松散索引扫描 1.满足条件  查询针对一个表。  GROUP BY 使用索引的最左前缀。  只可以使用MIN()和MAX()聚集函数,并且它们均指向...
  • Mysql5.7 GROUP BY规范

    2019-04-28 08:44:43
    Mysql5.7GROUP BY规范 使用group by查询分组查询是时,需要使用group by + 字段 或者 使用聚合函数来确定分组的唯一性。 配置参数: ONLY_FULL_GROUP_BY 配置严谨group by 的语法严谨 ...

    Mysql5.7GROUP BY规范

    使用group by查询分组查询是时,需要使用group by + 列字段  或者  使用聚合函数来确定分组的唯一性。
    配置参数: ONLY_FULL_GROUP_BY  配置严谨group by 的语法严谨
    
    展开全文
  • order by 从英文里理解就是行的排序方式,默认的为升序。 order by 后面必须出排序的字段名,可以是... 您可能感兴趣的文章:sql中 order bygroup by的区别深度分析mysql GROUP BY 与 ORDER BYgroup by,having,o
  • mysqlgroup by语句用于分组查询,可以根据给定数据的每个成员对查询结果进行分组统计,最终得到一个分组汇总表, 经常和having一起使用,需要的朋友可以参考下
  • MySQL5.7版本,使用SUM等聚合函数统计时,需要group by,否则会报错: this is incompatible with sql_mode=only_full_group_by 因此,考虑修改MySQL的配置 进入etc目录 cd /etc 修改my.cnf配置...
  • mysqlgroup by 和select 字段数不同

    千次阅读 2016-07-31 22:38:37
    mysql> select count(1),task_type,status from action where biz_date='20141014' group by status; +----------+-----------+--------+ | count(1) | task_type | status | +----------+-----------+-
  • MySQLgroup by原理和理解

    万次阅读 多人点赞 2019-06-03 17:57:18
    写在前面的话:用了好久group by,今天早上一觉醒来,突然感觉group by好陌生,总有个筋别不过来,为什么不能够select * from Table group by id,为什么一定不能是*,而是某一个或者某个的聚合函数,group by ...
  • MySQL group by 优化

    2019-07-01 14:49:54
    查找了网上一些博客分析GROUP... 如果GROUP BY时,SELECT的列不止GROUP BY列一个,并且GROUP BY的列不是主键 ,产生临时表. 3. 如果GROUP BY的列有索引,ORDER BY的列没索引.产生临时表. 4. 如果GROUP BY的列和ORDER B...
  • 这里写自定义目录标题mysql使用group by分组后筛选某个值最大的一列其他解决方案: mysql使用group by分组后筛选某个值最大的一 今天在mysql使用group希望group by之后根据某个字段的最大值找出那一,先看下表...
  • Mysql优化之GROUP BY语句优化

    千次阅读 2019-06-27 14:47:19
    如果GROUP BY时,SELECT的列不止GROUP BY列一个,并且GROUP BY的列不是主键 ,产生临时表 如果GROUP BY的列有索引,ORDER BY的列没索引.产生临时表 如果GROUP BY的列和ORDER BY的列不一样,即使都有索引也会产生临时表 如...
  • 在平时的开发任务中我们经常会用到MYSQLGROUP BY分组, 用来获取数据表中以分组字段为依据的统计数据。比如有一个学生选课表,表结构如下: Table: Subject_Selection Subject Semester Attendee -------------...
  • MySQL GROUP BY 语句使用总结

    万次阅读 多人点赞 2018-02-02 15:38:12
    MySQL GROUP BY 语句使用总结 大家好,我是Yangrl. 总结一下MySQL中查询记录操作中的GROUP BY...一)作用:GROUP BY 语句根据一个或多个对结果集进行分组。会把值相同放到一个组中,最终查询出的结果只会显示组中一
  • mysql group by 优化

    千次阅读 2016-07-27 18:04:32
    本以为mysql select 查询单单只有 where order by 时会进行 索引触发 没想到group by 也可以利用到对应的索引 首先创建一个试坑表 居然调用到name 这个索引了 后来找到一个group by 原理文章有个哥们...
  • 使用group by 进行分组查询时,提示异常: SELECT list is not in GROUP BY clause and contains nonaggregated column ‘XXX’ which is not functionally dependent on columns in GROUP BY clause; this is ...
  • MySQL5.7 group by报错1055

    2017-10-09 16:22:23
    MySQL5.7 group by报错1055
  • MySQL group by查询其他字段

    万次阅读 2018-08-08 09:50:16
    在做数据库查询的时候,用到了分组求和 先看一下我的表结构: puId是外键,我就是根据这个字段分组求和pay字段,...select id,bargain,sum(pay) as pay from margin where status='A' group by puId; 然后就报错...
  • Mysql 语句编辑与执行顺序 编辑顺序 select [distinct] from join(如left join) on where group by having union order by limit 执行顺序 from on join where group by having select ...
  • MySQL查询优化:GROUP BY

    万次阅读 多人点赞 2019-03-05 19:46:16
    一、group by group by 优化方法 — 索引 松散索引扫描(Loose Index Scan) 为什么松散索引扫描的效率会很高? 紧凑索引扫描(Tight Index Scan) group by 优化方法 — 直接排序 二、group by 与 distinct ...
  • mysqlgroup by 和select 字段数不同 首先,这个是MySQL对标准sql的扩展 这在mysql 中是合法的。在ORACLE中会报错。 这是mysql的设计,当group by 字段和select 多字段是唯一的一个分组时,这样能提高效率...
  • mysql group by

    千次阅读 2012-09-25 09:30:39
    group by语法可以根据给定数据的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。 SELECT子句中的列名必须为分组函数。函数对于GROUP BY子句定义的每个组各返回一个结果。 某个员工信息表结构...
  • mysql group by 超慢问题

    千次阅读 2019-10-10 15:32:59
    mysql group by 时超慢 ,group by 的字段还是 索引字段 看一下表结构 CREATE TABLE `cxy_act_code_verlog` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `dep_id` varchar(50) COLLATE utf8mb4_unicode_ci ...
  • mysql group by作用

    千次阅读 2017-06-06 11:53:07
    group by是跟MySQL的聚合函数一起使用的,通过把一个(column)分成组(group),来分别使用聚合函数。  常见聚合函数: AVG() 求平均数COUNT() 求的总数MAX() 求最大值MIN() 求最小值SUM() 求和 聚合函数...
  • Mysql GROUP BY 排除null数据

    千次阅读 2019-11-05 11:20:34
    最近在Mysql发现一个问题,当我们如果使用GROUP BY如果出现NULL值,MYSQL会怎样处理。而且如果我需要把每个NULL值都打印出来而不是分组,那该怎么办? 下面我们做个试验: CREATE TABLE IF NOT EXISTS A(id INT ...
  • 秒懂mysql中的group by用法

    万次阅读 多人点赞 2019-06-06 18:13:23
    先来看下表1,表名为test: 执行如下SQL语句: SELECT name FROM test GROUP BY name 你应该很容易知道运行的结果,没...可是为了能够更好的理解“group by”多个“和”聚合函数“的应用,我建议在思考的过程中...
  • ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘myhomework.student.SId’ which is not functionally dependent on columns in GROUP BY ...
  • 可以使用GROUP BY组值一,并且如果愿意的话,可以将该进行计算。使用COUNT,SUM,AVG等功能的分组。 要了解GROUP BY子句考虑的EMPLOYEE_TBL的的表具有以下记录: mysql> SELECT * FROM employee_tbl; +------...
  • 基本共识:进行groupby时,groupby中的字段可以不出现在select中,但是select中只能有groupby中的字段和函数. 但如下示例sql,依然能正常执行: 数据表: 执行如下sql,发现能正常执行,而且groupby后默认取每组第一条...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 114,358
精华内容 45,743
关键字:

groupby其他列mysql

mysql 订阅