首页 >数据库 >mysql教程 >如何在 SQL 中通过键分组实现顺序行编号?

如何在 SQL 中通过键分组实现顺序行编号?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-22 19:57:16929浏览

How to Implement Sequential Row Numbering with Key Grouping in SQL?

SQL 中键分组的顺序行编号

SQL 提供了一个强大的功能来顺序枚举特定键组中的行。当您需要根据不同的类别或属性组织数据时,此功能特别有用。让我们探讨一下此功能如何在各种 SQL 方言中工作。

不同 SQL 方言中的实现

以下 SQL 方言提供了按键组顺序进行行编号的解决方案:

  • SQL服务器
  • Oracle
  • PostgreSQL
  • Sybase
  • MySQL 8.0
  • MariaDB 10.2
  • SQLite 3.25

示例数据和所需的投影

考虑以下带有(CODE,NAME)元组的示例表:

CODE NAME    
---- ----
A    Apple
A    Angel
A    Arizona
B    Bravo
C    Charlie
C    Cat
D    Dog
D    Doppler
D    Data
D    Down

所需的投影使用 CODE 作为分组属性的投影看起来如下像:

CODE C_NO NAME    
---- ---- ----
A    0    Apple
A    1    Angel
A    2    Arizona
B    0    Bravo
C    1    Charlie
C    0    Cat
D    0    Dog
D    1    Data
D    2    Down
D    3    Doppler

SQL 查询来完成顺序行编号

要实现按键组的顺序行编号,您可以利用以下 SQL 查询:

SELECT
    CODE,
    ROW_NUMBER() OVER (PARTITION BY CODE ORDER BY NAME) - 1 As C_NO,
    NAME
FROM
    MyTable

此查询将根据 CODE 列对表进行分区,并按 NAME 对每个分区内的记录进行排序列,然后从结果行号中减去 1,以获得每个键组所需的从 0 开始的顺序编号。

以上是如何在 SQL 中通过键分组实现顺序行编号?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn