MySQL中的行项目计数
我有一个连接到多个表的复杂查询来显示事务历史记录,我想要一种快速简便的方法来计算订单id的出现次数,使其成为行号。我已经用代码完成了,但出于性能原因,我想用MySQL完成。以下是我的一个例子:MySQL中的行项目计数,mysql,sql,database,count,window-functions,Mysql,Sql,Database,Count,Window Functions,我有一个连接到多个表的复杂查询来显示事务历史记录,我想要一种快速简便的方法来计算订单id的出现次数,使其成为行号。我已经用代码完成了,但出于性能原因,我想用MySQL完成。以下是我的一个例子: order_id item_id --------- -------- 1111111 444444 1111111 555555 1111111 666666 1111112 123333 1111112 121111
order_id item_id
--------- --------
1111111 444444
1111111 555555
1111111 666666
1111112 123333
1111112 121111
1111113 123123
1111114 123123
1111115 123123
这就是我希望它看起来的样子:
order_id line_number item_id
--------- ------------ ---------
1111111 1 444444
1111111 2 555555
1111111 3 666666
1111112 1 123333
1111112 2 121111
1111113 1 123123
1111114 1 123123
1111115 1 123123
我尝试了COUNTorder\u id,但没有效果,除非有好方法。谢谢
MySQL版本5.5.43在MySQL 8.0中,只需使用行号:
在早期版本中,除了使用变量之外,还有一种解决方案是使用子查询进行内联计数:
select
order_id,
(
select 1 + count(*)
from mytable t1
where t1.order_id = t.order_id and t1.item_id < t.item_id
) line_number,
item_id
from mytable t
order by order_id, item_id
在MySQL 8.0中,只需使用行号:
在早期版本中,除了使用变量之外,还有一种解决方案是使用子查询进行内联计数:
select
order_id,
(
select 1 + count(*)
from mytable t1
where t1.order_id = t.order_id and t1.item_id < t.item_id
) line_number,
item_id
from mytable t
order by order_id, item_id
你在运行哪个版本的MySQL?@GMB MySQL版本5.5.43你在运行哪个版本的MySQL?@GMB MySQL版本5.5.43你是最好的。非常感谢。你是最棒的。非常感谢。