1. 程式人生 > >mysql中對分組內容排序

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