SQL Find rows that violate UNIQUE together index

后端 未结 2 456
伪装坚强ぢ
伪装坚强ぢ 2021-01-11 23:44

i want to put unique index on two (or more) columns in a table, but i get \"duplicate keys found\". How to select those rows which cause duplication?

相关标签:
2条回答
  • 2021-01-11 23:56

    You could use one of the following ways:

    SELECT t1.rowid
    FROM   this_table t1
    WHERE  EXISTS (SELECT '1'
                   FROM   this_table t2
                   WHERE  t2.column_value1 = t1.column_value1
                          AND t2.column_value2 = t1.column_value2
                          AND t2.rowid > t1.rowid);
    
    SELECT *
    FROM   this_table_name a
    WHERE  a.rowid > ANY (SELECT b.rowid
                          FROM   this_table_name b
                          WHERE  a.col1 = b.col1
                                 AND a.col2 = b.col2);
    
    SELECT my_column,
           Count(my_column)
    FROM   this_table_name
    GROUP  BY my_column
    HAVING Count (my_column) > 1;
    
    0 讨论(0)
  • 2021-01-12 00:05

    You can use Group By and Having for this:

    SELECT col1,
           col2
    FROM   table
    GROUP  BY col1,
              col2
    HAVING Count(*) > 1
    

    Basically - group the values, then filter for instances where there is more than one.

    0 讨论(0)
提交回复
热议问题