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