如何仅在oracle PL / SQL中查找某些特定列的重复值的记录

时间:2018-06-12 15:13:29

标签: sql oracle

我在PL / SQL Developer中使用Oracle。

我在下面有这个简单的SQL查询:

  select 
          col1
          col2,
          col3,
          col4,
          col5

  from table t1
   (condition required)
  and  col1=X or col=X or...

我希望选择具有相同值的col2和col3的所有不同记录。 例如:

  

记录1: col2 = 5 col3 =橙色记录2: col2 = 5 col3 =橙色记录3:< /强>   col2 = 8 col3 = apple
记录4: col2 = 8 col3 = apple

2 个答案:

答案 0 :(得分:2)

使用分析函数:

select t.*
from (select t.*, count(*) over (partition by col2, col3) as cnt
      from t
     ) t
where cnt > 1
order by col2, col3;

答案 1 :(得分:0)

select 
          t1.col1
          t1.col2,
          t1.col3,
          t1.col4,
          t1.col5
from table t1
join table t2 on t1.col2 = t2.col2 and t1.col3 = t2.col3 and t1.rowid <> t2.rowid
where ...
;

如果表格中有主键列,请使用该列而不是rowid