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