mysql 分组排序取每组第一条,值无序
时间: 2023-11-23 13:13:27 浏览: 104
Mysql取分组后的每组第一条数据
可以使用子查询和GROUP BY语句来实现这个需求。具体实现步骤如下:
1. 使用GROUP BY语句按照分组字段进行分组。
2. 在每个分组中,使用子查询获取该分组中的第一条记录。子查询的查询条件是与分组字段相等。
3. 对子查询的结果按照指定的排序字段进行排序,以确保获取到的第一条记录是正确的。
4. 最后将子查询的结果与原始表进行连接,以获取其他字段的值。
例如,假设有一张名为student的表,包含id、name、age、score和class字段,需要按照class字段进行分组,并取出每组中score最高的记录。可以使用以下SQL语句实现:
```
SELECT s.id, s.name, s.age, s.score, s.class
FROM student s
INNER JOIN (
SELECT class, MAX(score) AS max_score
FROM student
GROUP BY class
) t ON s.class = t.class AND s.score = t.max_score
ORDER BY s.class;
```
这个SQL语句会首先按照class字段进行分组,然后在每个分组中找出score最高的记录。最后将结果与原始表进行连接,以获取其他字段的值。注意,这里使用了INNER JOIN语句来连接子查询和原始表。
阅读全文