首页 > 解决方案 > MySQL:我有一个带有 ORDER BY 和 GROUP BY 的查询,但 GROUP BY 总是在同一行分组

问题描述

我有一个非常复杂的查询(很多连接),它返回这个数据集:

+------------+-----------+-----------+---------------------+---------------------+-----------+------------+
| vehicle_id | pickup_id | driver_id | pickup_time         | dropoff_time        | code      | name       |
+------------+-----------+-----------+---------------------+---------------------+-----------+------------+
|         13 |       154 |        23 | 2021-08-18 22:30:00 | 2021-08-18 23:30:00 | 17526     | Natalie    |
|         13 |        16 |        23 | 2021-08-18 23:35:00 | 2021-08-19 00:35:00 | 17245     | Mark       |
|         12 |      2879 |        15 | 2021-08-19 12:00:00 | 2021-08-19 21:00:00 | 17517     | Will       |
+------------+-----------+-----------+---------------------+---------------------+-----------+------------+

如果我在GROUP BY vehicle_id这个查询中添加一个,我会得到 Mark 和 Will 行,但我希望 Natalie 行。即使我改变了内部查询

这是完整的查询,内部稍微简化了一点:

SELECT * FROM (
    SELECT * 
    FROM trips 
    WHERE vehicle_id IS NOT NULL 
    ORDER BY pickup_time ASC
) AS tmp 
GROUP BY vehicle_id

不管我是这样做ORDER BY还是ASCDESC仍然得到马克和威尔的记录。我买不到娜塔莉的。

我的查询做错了什么?

标签: mysqlsql-order-bygreatest-n-per-group

解决方案


推荐阅读