【问题标题】:Arrange duplicates and number the records in a sequence - MySQL排列重复并按顺序编号记录 - MySQL
【发布时间】:2013-03-22 13:00:57
【问题描述】:

我的 MySQL 表有以下记录,

    ID Name   Account
-----------------------------------------
    1  ABC    PQR
    2  DEF    PQR
    3  ABC    PQR
    4  XYZ    ABC
    5  DEF    PQR
    6  DEF    ABC

我正在寻找类似

的输出
    ID Name   Account   Duplicate Sr No.
-----------------------------------------
    1  ABC    PQR       1
    2  DEF    PQR       1
    3  ABC    PQR       2
    4  XYZ    ABC       1
    5  DEF    PQR       2
    6  DEF    ABC       1

这里我的意思是每个副本都应该有一个 Sr Number 或为副本编号。

Name : ABC 和 Account : PQR 在表中重复时,Duplicate Sr No 从 1 增加到 2

【问题讨论】:

标签: mysql sql select duplicates


【解决方案1】:

试试:

SELECT t1.id, t1.name, t1.account
       , (SELECT COUNT(*)
            FROM tableName t2
           WHERE t2.name = t1.name
             AND t2.account = t1.account
             AND t2.id <= t1.id) AS dupno
  FROM tableName t1;

输出:

ID NAME ACCOUNT DUPNO
-- ---- ------- -----
 1 ABC  PQR         1 
 2 DEF  PQR         1 
 3 ABC  PQR         2 
 4 XYZ  ABC         1 
 5 DEF  PQR         2 
 6 DEF  ABC         1 

【讨论】:

    【解决方案2】:

    MySQL 还不支持Window Function,就像任何其他RDBMS 一样。这种行为与ROW_NUMBER() 类似,它为组中的每条记录提供排名编号。在 mysql 中,这可以通过使用 用户变量来模拟。

    SELECT  ID, Name, Account, DuplicateSR_No
    FROM
            (
                select  ID,
                        Name,
                        Account,
                        @sum := if(@nme = Name AND @acct = Account, @sum ,0) + 1 DuplicateSR_No,
                        @nme := Name,
                        @acct := Account
                from    TableName,
                        (select @nme := '', @sum := 0, @acct := '') vars
                order   by  Name, Account
            ) s
    ORDER   BY ID
    

    输出

    ╔════╦══════╦═════════╦════════════════╗
    ║ ID ║ NAME ║ ACCOUNT ║ DUPLICATESR_NO ║
    ╠════╬══════╬═════════╬════════════════╣
    ║  1 ║ ABC  ║ PQR     ║              1 ║
    ║  2 ║ DEF  ║ PQR     ║              1 ║
    ║  3 ║ ABC  ║ PQR     ║              2 ║
    ║  4 ║ XYZ  ║ ABC     ║              1 ║
    ║  5 ║ DEF  ║ PQR     ║              2 ║
    ║  6 ║ DEF  ║ ABC     ║              1 ║
    ╚════╩══════╩═════════╩════════════════╝
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-20
      • 1970-01-01
      • 2021-08-28
      • 2013-01-10
      • 1970-01-01
      • 2018-01-26
      相关资源
      最近更新 更多