mysql中对分组内容排序

id group sort
1 1 1
2 1 2
3 2 2
4 2 1
5 1 3

表sort_group如上图所示,要求:选取每组中最大值。

方法1:

SELECT a.group, SUBSTR(GROUP_CONCAT(sort ORDER BY sort DESC) FROM 1 FOR 1) maxsort
FROM sort_group a
GROUP BY `group`;

方法2:

SELECT *
FROM sort_group a
LEFT JOIN sort_group b ON b.`group` = a.`group` AND a.sort < b.sort
WHERE b.sort is null;

这种实现利用了左连接,原理将表根据分组字段进行自连接,然后根据a.sort < b.sort过滤连接,那么连接好的记录中,右表为空时,左表中的a.sort肯定是最大的,这样最后便得到了需求的记录。

参考:https://blog.csdn.net/asdasd3418/article/details/77715015

猜你喜欢

转载自blog.csdn.net/hellorichen/article/details/82527315