gpt4 book ai didi

mysql - 查找连续字段,直到字段更改并将序列号添加到具有相同名称的行

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

这建立在这个问题的基础上:Find contiguous index until certain field changes

基本上有这样的数据

Name    Address Index
----- ------- --
Test 0x0100 0
Test 0x0100 1
Test 0x0100 2
Test 0x0100 3
Test 0x0100 4
Test2 0x0100 5
Test2 0x0100 6
Test2 0x0100 7
Test 0x0100 8
Test 0x0100 9
Test 0x0100 10
Test3 0x0100 11
Test3 0x0100 12
Test 0x0100 13
Test 0x0100 14
Test 0x0100 15

数据按地址排序,然后按索引排序。

然后根据我上一个问题的答案进行如下总结:

Name    Address Start   End
----- ------- ----- ----
Test 0x0100 0 4
Test2 0x0100 5 7
Test 0x0100 8 10
Test3 0x0100 11 12
Test 0x0100 13 15

我现在想做的是将序列号附加到同一地址空间内具有相同值的那些名称的末尾,如下所示:

Name    Address Start   End
----- ------- ----- ----
Test_1 0x0100 0 4
Test2 0x0100 5 7
Test_2 0x0100 8 10
Test3 0x0100 11 12
Test_3 0x0100 13 15

这对 MySQL 可行吗?存储过程没问题。

谢谢!

最佳答案

这是一个间隙和岛屿问题。您可以使用行号的差异来获取组。

但是如果您已经拥有数据,那么:

select (case when count(*) over (partition by name) = 1 then name
else concat(name, '_', row_number() over (partition by name order by start))
end) as name,
. . .
from (<your query that does the first part here>) t;

从 MySQL 8.0 开始可以使用窗口函数。

关于mysql - 查找连续字段,直到字段更改并将序列号添加到具有相同名称的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57400954/

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