groupby分组取组内第⼀条正常情况下先将⼦查询进⾏排序,然后进⾏分组便可以取到组内的第⼀条数据
但是在mysql5.7之后需要在⼦查询排序的时候加⼀个limit
举个例⼦
1. student表
SELECT*FROM student
id  name age gender
1张三丰161
groupby分组
2灭绝师太170
3扫地僧181
4杨逍191
2. 按照gender进⾏分组,获取每个组内年龄最⼤的,很明显gender为1的age应该是19,但是事实却不是
SELECT
a.*
FROM
(
SELECT*FROM student ORDER BY age desc
) a
GROUP BY
id  name age gender
2灭绝师太170
1张三丰161
3. 这时候如果添加⼀个limit,便可以得到正确的结果
SELECT
a.*
FROM
(
SELECT*FROM student ORDER BY age desc limit1000
) a
GROUP BY
id  name age gender
2灭绝师太170
4杨逍191

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。