MySQL/PHP根据字段对行进行排序


MySQL / PHP ordering rows based on field

我需要根据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_order5 113 14(零)21 121.0000 16 113 14(零)22 124.0000 21 113 17(零)25 120.0000 12 113 17(零)26 180.0000 2

它不是很快,但如果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