众所周知, 我们使用group by只能获取到分组数据, 但是有时候我们只需要获取到排序在分组最前面的一个数据即可,这时候, 常规sql就无法做到了 Mysql方案 SELECT id, a, b FROM (SELECT *, @row_num := IF(@prev_group = a, @row_num + 1, 1) AS row_num, @prev_group := a FROM part ORDER BY a, b DESC) AS subquery WHERE row_num = 1; Postgresql方案 待补充