mysql - 获取每组记录的行号

标签 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

有什么想法吗?

非常感谢。

最佳答案

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;

关于mysql - 获取每组记录的行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30790847/

相关文章:

mysql - 比较两个 MySQL 表并删除不再存在的行

php - MySQL中如何连接两个表

html - 将 mysql 数据库打印到 socket.io 和 node.js 中的 html 页面

sql - 获取父记录的所有数据作为子记录

sql - UDF 中的 COLLATE 未按预期工作

php - while($stmt->fetch()) 只循环一次

php mysql 如果行为空且不为空

sql - 我应该如何确保 mytable 有效

SQL 地理纬度/经度距离计算器

java - 将多个日期格式更改为一个日期格式的sql函数