暂无图片
分享
StartupForce
2020-12-15
mysql only_full_group_by为啥select子句中字段没出现在group by中也不报错

我理解的only_full_group_by是select子句中出现的字段都需要出现在group by子句中才不会报错,但是实际测试不是这样呢。测试过5.7和8.0.22都是这样。
1.报错的情况,用第二个字段在group by中就报错

root@172.20.3.11:3308 : loadtest : 10:25:47>select id,k,c,count(*) from sbtest1 group by k;
ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'loadtest.sbtest1.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

2.不报错的情况,第一个字段在group by中就不报错

root@172.20.3.11:3308 : loadtest : 10:36:01>select id,k,c,count(*) from sbtest1 group by id limit 10;
+----+--------+-------------------------------------------------------------------------------------------------------------------------+----------+
| id | k      | c                                                                                                                       | count(*) |
+----+--------+-------------------------------------------------------------------------------------------------------------------------+----------+
|  1 | 501462 | 68487932199-96439406143-93774651418-41631865787-96406072701-20604855487-25459966574-28203206787-41238978918-19503783441 |        1 |
|  2 | 502480 | 13241531885-45658403807-79170748828-69419634012-13605813761-77983377181-01582588137-21344716829-87370944992-02457486289 |        1 |
|  3 | 498943 | 51185622598-89397522786-28007882305-52050087550-68686337807-48942386476-96555734557-05264042377-33586177817-31986479495 |        1 |
|  4 | 502646 | 54133149494-75722987476-23015721680-47254589498-40242947469-55055884969-23675271222-20181439230-74473404563-55407972672 |        1 |
|  5 | 528908 | 05848131016-49737365047-61494872375-29450471021-12759747197-90410473835-31712590401-72789260457-13598426232-44299144230 |        1 |
|  6 | 502055 | 27259561572-06414927280-46715228218-84893654561-76731023738-20557067759-19583561006-08735004037-78310463408-71967134144 |        1 |
|  7 | 501541 | 34449943118-96426893499-71362880743-84675025487-71635883940-36793480598-23136229337-86150985465-00300966783-42133648643 |        1 |
|  8 | 500254 | 10676430684-17587037436-43492067438-02978392453-17382292196-18617843758-31971657195-07771170431-78457836714-38765745127 |        1 |
|  9 | 456174 | 98756348016-69119199127-93668626818-58833859316-23503426990-30887483852-09587067298-07595478603-14470766687-79320847421 |        1 |
| 10 | 497549 | 06208928544-69213163800-95083408911-83949560459-26629535077-58798231143-58688386449-59141897529-07315042085-86003451120 |        1 |
+----+--------+-------------------------------------------------------------------------------------------------------------------------+----------+

收藏
分享
2条回答
默认
最新
StartupForce

看了下文档,说的是sql 1999之后,如果字段之间有联系,比如下面 我例子中id是主键,那么只有主键出现在group by中不报错。不是跟字段顺序有关。所以关闭该问题

暂无图片 评论
暂无图片 有用 0
StartupForce
问题已关闭: 问题已经得到解决
暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏