基于字段

时间:2016-01-06 16:07:46

标签: php mysql sorting group-by

我需要根据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

1 个答案:

答案 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