web-dev-qa-db-ja.com

テーブル内で2回以上(カウント)発生する一意の値ペアを選択する

2回以上発生する一意の値のペアを持つ行を取得するにはどうすればよいですか...これが私が何をしようとしているのかの例です。

SELECT 
 column_fk_id1, column_fk_id2,
 COUNT(distinct column_fk_id1, column_fk_id2) AS unique_pair_repeats
FROM table
WHERE column_fk_id1 IS NOT NULL
GROUP BY column_fk_id1, column_fk_id2
HAVING unique_pair_repeats > 2
1
user5690390

ほぼ機能しているものは、区別を削除して> 2を> 1に変更するだけです。グループ化がそれを処理し、> 2が2つではなく3つ以上のエントリを持つものを探すため、区別は必要ありません。

drop table tab1;
create table tab1 as (select 1 column_fk_id1,2 column_fk_id2 from dual);
insert into tab1 values (1,2);
insert into tab1 values (2,1);
insert into tab1 values (3,4);
insert into tab1 values (4,3);
insert into tab1 values (5,5);
insert into tab1 values (6,7);
insert into tab1 values (6,7);
insert into tab1 values (6,8);
commit;


SELECT column_fk_id1, column_fk_id2, COUNT(*) AS unique_pair_repeats
FROM tab1
WHERE column_fk_id1 IS NOT NULL
GROUP BY column_fk_id1, column_fk_id2
HAVING count(*) > 1;

COLUMN_FK_ID1 COLUMN_FK_ID2 UNIQUE_PAIR_REPEATS
------------- ------------- -------------------
            1             2                   2
            6             7                   2

2 rows selected.
6
Leigh Riffel