我正在尝试过滤掉在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
答案 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
进行比较。