【发布时间】:2015-05-28 09:18:56
【问题描述】:
我的 SQL SELECT 语句有问题。我得到了正确的顺序,正确的驱动程序,但我的其他列不正确!而且我无法正确理解。
我有这样的数据:
id, races_id, drivers_id, drive_nr, lap_nr, time, dnf
"231", "9", "41", "1", "1", "00:00:04.750", "0"
"232", "9", "41", "1", "2", "00:00:06.030", "0"
"233", "9", "41", "1", "3", "00:00:01.740", "0"
"234", "9", "42", "1", "1", "00:00:05.440", "0"
"235", "9", "42", "1", "2", "00:00:05.400", "0"
"236", "9", "42", "1", "3", "00:00:02.300", "0"
"237", "9", "43", "1", "1", "00:00:00.620", "0"
"238", "9", "43", "1", "2", "00:00:00.290", "0"
"239", "9", "43", "1", "3", "00:00:00.280", "0"
"240", "9", "44", "1", "1", "00:00:00.600", "0"
"241", "9", "44", "1", "2", "00:00:00.190", "0"
"242", "9", "44", "1", "3", "00:00:00.220", "0"
"243", "9", "45", "1", "1", "00:00:02.830", "0"
"244", "9", "45", "1", "2", "00:00:01.890", "0"
"245", "9", "45", "1", "3", "00:00:03.200", "0"
"246", "9", "46", "1", "1", "00:00:03.580", "0"
"247", "9", "46", "1", "2", "00:00:04.550", "0"
"248", "9", "46", "1", "3", "00:00:01.060", "0"
"249", "9", "47", "1", "1", "00:00:02.920", "0"
"250", "9", "47", "1", "2", "00:00:03.950", "0"
"251", "9", "47", "1", "3", "00:00:00.320", "0"
"252", "9", "48", "1", "1", "00:00:02.150", "0"
"253", "9", "48", "1", "2", "00:00:05.720", "0"
"254", "9", "48", "1", "3", "00:00:04.530", "0"
"255", "9", "49", "1", "1", "00:00:01.530", "0"
"256", "9", "49", "1", "2", "00:00:04.360", "0"
"257", "9", "49", "1", "3", "00:00:07.110", "0"
"258", "9", "50", "1", "1", "00:00:00.450", "0"
"259", "9", "50", "1", "2", "00:00:03.550", "0"
"260", "9", "50", "1", "3", "00:00:07.900", "0"
查询这个:
SELECT `id` ,
`races_id` ,
`drivers_id` ,
`drive_nr` ,
`lap_nr` ,
MIN( `time` ) AS TIME,
`dnf`
FROM `laps`
WHERE `races_id` =9
GROUP BY drivers_id`
ORDER BY MIN( `time` ) ASC
我明白了:
id, races_id, drivers_id, drive_nr, lap_nr, time, dnf
240, 9, 44, 1, 1, 00:00:00.190, 0
237, 9, 43, 1, 1, 00:00:00.280, 0
249, 9, 47, 1, 1, 00:00:00.320, 0
258, 9, 50, 1, 1, 00:00:00.450, 0
246, 9, 46, 1, 1, 00:00:01.060, 0
255, 9, 49, 1, 1, 00:00:01.530, 0
231, 9, 41, 1, 1, 00:00:01.740, 0
243, 9, 45, 1, 1, 00:00:01.890, 0
252, 9, 48, 1, 1, 00:00:02.150, 0
234, 9, 42, 1, 1, 00:00:02.300, 0
所以我以正确的顺序得到正确的时间列,而不是像ID, drive_nr, lap_nr, dnf这样的其他列
如何修复我的查询以在最短时间和正确的其他数据下获得不同的 drivers_id?
【问题讨论】:
-
问题是您按驱动程序 ID 分组,并获取 MIN 时间。所有其他字段既不是聚合字段,也不是 group by 子句,因此它们来自哪一行的值是不确定的。您需要获得最快圈速,然后将其连接回表格以获取其他字段。
标签: mysql group-by sql-order-by