获取每组记录的行号

时间:2015-06-11 20:30:16

标签: mysql sql

我有一个像这样的MySQL表:

Time   Id    Item   Size
=====  ===== ====== ====
09:15  3128  TC8991 40
09:15  3128  RD4453 20
09:15  3128  DE5874 30
10:21  2574  RF5544 40
10:21  2574  WS4441 25
11:33  3369  TG4987 30
11:58  7413  HG4539 40

我需要为Time + Id的每个组合添加一个行号,如下所示:

Row  Time   Id    Item   Size
==== =====  ===== ====== ====
1    09:15  3128  TC8991 40
2    09:15  3128  RD4453 20
3    09:15  3128  DE5874 30
1    10:21  2574  RF5544 40
2    10:21  2574  WS4441 25
1    11:33  3369  TG4987 30
1    11:58  7413  HG4539 40

我的查询是这样的:

select time, id, item, size
from transactions

有什么想法吗?

非常感谢。

1 个答案:

答案 0 :(得分:2)

MySQL中的一种方法是使用变量:

select time, id, item, size,
       (@rn := if(@ti = concat(time, id), @rn + 1,
                  if(@ti := concat(time, id), 1, 1)
                 )
       ) as row
from transactions cross join
     (select @rn := 0, @ti := '')
order by time, id;