首页 >数据库 >mysql教程 >如何在 SQL 中按键组分配连续行号?

如何在 SQL 中按键组分配连续行号?

Patricia Arquette
Patricia Arquette原创
2024-12-20 15:39:11668浏览

How to Assign Sequential Row Numbers by Key Group in SQL?

SQL 中按键组的顺序行编号

在 SQL 中,ROW_NUMBER() 函数为结果集中的行分配序号。要按键组分配顺序编号,请使用 PARTITION BY 子句按所需键对数据进行分组。

以下是给定表和所需输出的示例:

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

输出:

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

此查询分配连续行号 (C_NO)对于每个键组 (CODE),从 0 开始,按每个组中 NAME 的升序排列。

支持的数据库:

带有 PARTITION BY 的 ROW_NUMBER() 函数以下数据库支持:

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

以上是如何在 SQL 中按键组分配连续行号?的详细内容。更多信息请关注PHP中文网其他相关文章!

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