gpt4 book ai didi

mysql - 生成行号并将相同的行号分配给相同的值

转载 作者:行者123 更新时间:2023-11-29 05:51:28 26 4
gpt4 key购买 nike

我需要为每个新出现的重复值显示重复的行号。

示例表 orders 与列 AGENT_CODE 并且我希望预期输出类似于

Sl  agent_code
------------------
1 A001
2 A002
2 A002
2 A002
2 A002
2 A002
2 A002
2 A002
3 A003
3 A003
4 A004
4 A004
4 A004
4 A004
5 A007
5 A007
5 A007
6 A008
6 A008

通过编写查询,我能够获得序列号为 1,2,3,4....19 的行号:

SET @row_number := 0;
SELECT @row_number := @row_number + 1 AS row_number, AGENT_CODE
FROM orders, (SELECT @row_number := 0) t
ORDER BY agent_code

但我想要的是行号必须按预期输出中所示的每次新出现的顺序打印。

最佳答案

你想要类似于 DENSE_RANK() OVER (ORDER BY AGENT_CODE) 的东西,它需要 MySQL 8+。在旧版本中,您可以简单地执行此操作:

SELECT AGENT_CODE, (
SELECT COUNT(DISTINCT AGENT_CODE) + 1
FROM orders AS x
WHERE x.AGENT_CODE < t.AGENT_CODE
) AS sn
FROM orders AS t

PS:如果你想使用用户变量,那么你需要另一个名为 @prevagent 的变量。

关于mysql - 生成行号并将相同的行号分配给相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53555257/

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