我需要根据race_time
中的时间为列race_order设置一个值。这需要基于class_id
。
我已经尝试了一些不同的查询来获取我正在寻找的结果,但我在这个问题上遇到了障碍。
Column Type
time_tracking_id (Primary) int(1)
event_id int(1)
class_id int(1)
race_type varchar(1)
race_nbr int(1)
race_time varchar(10)
race_order int(1)
查看此sqlfiddle: http://www.sqlfiddle.com/#!9/2e2e6/1/0
这是我要找的结果:
time_tracking_id event_id class_id race_type race_nbr race_time race_order 5 113 14 (null) 21 121.0000 1 6 113 14 (null) 22 124.0000 2 1 113 17 (null) 25 120.0000 1 2 113 17 (null) 26 180.0000 2
答案 0 :(得分:3)
它不是很快,但如果race_time对于每个class_id都是唯一的,那么它是有效的:
SELECT
time_tracking_id,
event_id,
class_id,
race_type,
race_nbr,
race_time,
1 + (SELECT COUNT(*) FROM tbl_time_tracking t2
WHERE t2.class_id = tbl_time_tracking.class_id
AND t2.race_time < tbl_time_tracking.race_time) AS race_order
FROM
tbl_time_tracking
ORDER BY class_id,
race_time