文章目录
- 一.基础语法
- 1.1 GROUP BY
一.基础语法
1.1 GROUP BY
在MySQL8.0版本中,默认开启了严格模式
,可以通过以下语句开启:
SET sql_mode = 'ONLY_FULL_GROUP_BY';
严格模式的特殊之处:
- select后的字段除聚合字段外,必须出现在GROUP BY后;反过来,group by后的字段不一定出现在select后。
- 在GROUP BY严格模式下,查询结果中的每一行都
必须是一个组的聚合结果,而不是单个行的值
。
起因:在工作中有这样一个场景,在表中每个cltNbr下可能存在多条数据
SELECT clt_nbr AS cltNbr, MIN(rcrd_id) AS rcrdId
FROM ...
GROUP BY cltNbr
ORDER BY rcrc_id ASC
在上述sql语句中,因为GROUP BY在严格模式下,查询结果必须是
一个组的聚合结果
,所以按照rcrd_id进行排序,就不知道要取哪一个。将rcrd_id字段改为rcrdId即可。