我想在表中的两个(或更多)列上放置唯一索引,但我得到“找到重复的密钥”。如何选择那些导致重复的行?
答案 0 :(得分:14)
您可以使用Group By
和Having
:
SELECT col1,
col2
FROM table
GROUP BY col1,
col2
HAVING Count(*) > 1
基本上 - 对值进行分组,然后筛选出存在多个值的实例。
答案 1 :(得分:0)
您可以使用以下方式之一:
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;