Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查找违反唯一索引的行_Sql_Oracle11g - Fatal编程技术网

SQL查找违反唯一索引的行

SQL查找违反唯一索引的行,sql,oracle11g,Sql,Oracle11g,我想在一个表中的两列(或更多列)上放置唯一索引,但我得到了“找到重复键”。如何选择导致重复的行?您可以使用分组依据和拥有来实现此目的: SELECT col1, col2 FROM table GROUP BY col1, col2 HAVING Count(*) > 1 基本上-对值进行分组,然后筛选存在多个值的实例。您可以使用以下方法之一: SELECT t1.rowid FROM this_table t1 WHERE EXISTS (

我想在一个表中的两列(或更多列)上放置唯一索引,但我得到了“找到重复键”。如何选择导致重复的行?

您可以使用
分组依据
拥有
来实现此目的:

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

基本上-对值进行分组,然后筛选存在多个值的实例。

您可以使用以下方法之一:

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;

+1现在我不必写完我的答案。。。你对我来说太快了:)@CW_Vaidotas接受了他的回答,谢谢他。这也为其他人节省了一些时间,他们不必研究问题+答案+评论,只是为了看看问题已经解决。