首页 >数据库 >mysql教程 >如何在 MySQL 中生成每组的行号?

如何在 MySQL 中生成每组的行号?

Linda Hamilton
Linda Hamilton原创
2024-11-24 00:20:10647浏览

How to Generate Row Numbers per Group in MySQL?

MySQL 中每组的行号

在数据库管理系统中,理解组内的行编号对于数据分析和操作至关重要。在 MySQL 中,可以通过多种技术来实现根据特定条件(例如船员 ID 和类型)生成行号。

解决方案

为以下对象生成行号对于每个船员 ID 和类型的唯一组合,您可以使用以下 MySQL 查询:

SELECT    id,
          crew_id,
          amount,
          type,
         ( 
            CASE type 
            WHEN @curType 
            THEN @curRow := @curRow + 1 
            ELSE @curRow := 1 AND @curType := type END
          ) + 1 AS rank
FROM      Table1 p,
          (SELECT @curRow := 0, @curType := '') r
ORDER BY  crew_id,type asc;

在此query:

  • Table1 表示包含数据的原始表。
  • @curRow 和 @curType 是用户定义的变量,分别初始化为 0 和空字符串。
  • CASE 语句根据类型处理行编号。如果类型与 @curType 匹配,则行号(排名)增加 1。否则,它将 @curRow 重置为 1 并将 @curType 更新为当前类型。
  • CASE 语句中的 1 确保行号从 1 开始。

此查询返回所需的输出,其中行号添加为名为“rank”的附加列。

以上是如何在 MySQL 中生成每组的行号?的详细内容。更多信息请关注PHP中文网其他相关文章!

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