Я ищу найти дупс - PullRequest
       16

Я ищу найти дупс

1 голос
/ 14 февраля 2020

Я пытаюсь отфильтровать паролей, пишущих запрос в 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 ]

2 голосов
/ 14 февраля 2020

Использование оконного (analyti c) варианта 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 голос
/ 14 февраля 2020

Предполагается, что вы ищете строки с дублирующимися «первичными» значениями;

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;
0 голосов
/ 14 февраля 2020

Вы можете использовать простое 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 для сравнения.

...