在MySQL8.0版本中,默认开启了严格模式
,可以通过以下语句开启:
SET sql_mode = 'ONLY_FULL_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即可。