我正在寻找傻瓜

时间:2020-02-14 18:21:35

标签: sql oracle select duplicates

我正在尝试过滤掉在Oracle TOAD SQL中编写查询的重复项。以下是我的数据:

Primary          T_ID           C_ID
2039515494      276162453       20028
2176514662      276721971       5508
2176514662      276721972       5508

我希望只有

 Primary          T_ID          C_ID
2176514662      276721971       5508
2176514662      276721972       5508

3 个答案:

答案 0 :(得分:2)

使用count的窗口(分析)变体可以帮助您:

SELECT primary, t_id, c_id
FROM   (SELECT primary, t_id, c_id, COUNT(*) OVER (PARTITION BY primary, c_id) AS cnt
        FROM   mytable) t
WHERE  cnt > 1

答案 1 :(得分:1)

这假定您要查找具有重复的“主要”值的行;

select * from t where primary in 
(select primary from t group by(primary) having count(primary) > 1);

这假设您要同时考虑主对象和c_id

with t1 as (select primary, c_id from t group by(primary, c_id) having count(*) > 1) 
select t.primary, t.t_id, t.c_id from t, t1 where t.c_id = t1.c_id and t.primary = t1.primary;

答案 2 :(得分:0)

我认为您可以使用简单的exists

select t.*
from t
where exists (select 1 from t t2 where t2.primary = t.primary and t2.t_id <> t.t_id);

这假设t_id是唯一的。您可能还想包括c_id进行比较。