gpt4 book ai didi

mysql - MySQL 中的行项目计数

转载 作者:行者123 更新时间:2023-11-29 06:25:59 24 4
gpt4 key购买 nike

我有一个复杂的查询连接到多个表以显示“交易历史记录”,我想要一种快速、简单的方法来计算 order_id 的出现次数,使其成为 line_number。我用代码完成了它,但出于性能原因,我想用 MySQL 完成它。这是我所拥有的示例:

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

我尝试了 COUNT(order_id) 但没有成功,除非有好的方法。谢谢!

MySQL 版本 5.5.43

最佳答案

在 MySQL 8.0 中,只需使用 row_number():

select 
order_id,
row_number() over(partition by order_id order by item_id) line_number,
item_id
from mytable
order by order_id, item_id

在早期版本中,一种解决方案(除了使用变量之外)是使用子查询进行内联计数:


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 - MySQL 中的行项目计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59489838/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com