gpt4 book ai didi

mysql - 根据分组对 SQL 查询结果进行编号

转载 作者:行者123 更新时间:2023-11-29 07:48:15 25 4
gpt4 key购买 nike

我有一个包含许多行数据的表,每行都分配一个部分,由一个字母和一个数字组成(例如 A.1)。我需要从该表中检索所有数据并按此分区对其进行排序。当提取此数据时,我被指示生成一个新列,对本节中的每一行进行编号,从而创建小节(例如 A.1.1、A.1.2)

给定一组带有“部分”的数据,例如包含 2 个部分 A.1、B.1 的表格,我希望能够在附加列“SubNumber”1、2、3 等中对每个结果进行编号.当该行是新部分时,必须重新开始编号。

表示如下表结果集:

Data    | Section | SubNumber
_______________________
record1 | A.1 | 1
record2 | A.1 | 2
record3 | A.1 | 3
record4 | B.1 | 1
record5 | B.1 | 2

我一直在尝试在 SQL 中动态创建此 SubNumber,但尚未接近。

有什么想法吗?

最佳答案

您可以使用变量来做到这一点:

  select t.*,
(@rn := if(@s = Section, @rn + 1,
if(@s := Section, 1, 1)
)
) as SubNumber
from table t cross join
(select @rn := 0, @s := '') vars
order by Section;

这里的问题是组内的编号是任意的。您需要有某种方法来指定数字。当您做出决定后,请将该列添加到order by

关于mysql - 根据分组对 SQL 查询结果进行编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27148710/

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