gpt4 book ai didi

mysql - 每组 ID 的递增数字

转载 作者:行者123 更新时间:2023-11-29 01:54:43 27 4
gpt4 key购买 nike

下表代表了我在一个表中的数据。

+----+------+
| ID | Year |
+----+------+
| 1 | 2005 |
| 1 | 2006 |
| 2 | 2005 |
| 2 | 2007 |
| 2 | 2008 |
| 3 | 2005 |
| 4 | 2009 |
+----+------+

我想写一个查询来显示下面的结果。

+----+----+------+
| ID |auto| Year |
+----+----+------+
| 1 | 1 | 2005 |
| 1 | 2 | 2006 |
| 2 | 1 | 2005 |
| 2 | 2 | 2007 |
| 2 | 3 | 2008 |
| 3 | 1 | 2005 |
| 4 | 1 | 2009 |
+----+----+------+

如您所见,auto 字段将为每个 ID 显示一个递增的自动编号。

最佳答案

在 MySQL 中执行此操作的最佳方法是使用变量。但是,如果您使用变量,所有赋值都需要在同一个表达式中,因为 MySQL 不保证 SELECT 中表达式的计算顺序。

所以我建议:

select id, 
(@rn := if(@i = id, @rn + 1,
if(@i := id, 1, 1)
)
) as auto,
year
from tableX cross join
(select @i := -1, @rn := 0) params
order by id, year;

关于mysql - 每组 ID 的递增数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32313770/

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