选择在表中出现(计数)多次的唯一值对

use*_*390 2 mysql count distinct

如何检索具有不止一次出现的唯一值对的行...这是我正在尝试的示例..

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
Run Code Online (Sandbox Code Playgroud)

Lei*_*fel 8

您几乎可以使用,只需删除 distinct 并将 > 2 更改为 > 1。distinct 不是必需的,因为分组处理它,并且 > 2 正在寻找至少具有三个条目而不是两个条目的内容。

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.
Run Code Online (Sandbox Code Playgroud)