使用GROUP BY子句和聚合函数来实现,如下所示:
SELECT column_1, column_2, column_3 FROM table_name GROUP BY column_1 ORDER BY MAX(column_2) DESC;
其中,column_1为唯一列,column_2和column_3为需要保持匹配的列。使用GROUP BY子句按照唯一列进行分组,再使用聚合函数MAX()来获取匹配列的最大值,以此作为排序依据进行排序。DESC表示降序排序,如果需要升序排序则改为ASC。
代码示例:
假设有以下数据表:
+----+------------+------+-------+ | id | date | name | score | +----+------------+------+-------+ | 1 | 2019-01-01 | A | 90 | | 2 | 2019-01-02 | B | 80 | | 3 | 2019-01-03 | C | 85 | | 4 | 2019-01-04 | A | 95 | | 5 | 2019-01-05 | B | 70 | | 6 | 2019-01-06 | C | 75 | +----+------------+------+-------+
按照name列排序,但保持date和score列在一起,代码如下:
SELECT date, name, MAX(score) AS max_score FROM table_name GROUP BY name ORDER BY max_score DESC;
结果为:
+------------+------+-----------+ | date | name | max_score | +------------+------+-----------+ | 2019-01-04 | A | 95 | | 2019-01-01 | B | 80 | | 2019-01-03 | C | 85 | +------------+------+-----------+