SQL选择:与ID匹配的行是否都具有相同的列值

时间:2019-03-20 18:03:42

标签: sql

我有一张这样的桌子

sub_id      reference
1           A
1           A
1           A
1           A
1           A
1           A
1           C
2           B
2           B
3           D
3           D

我想确保每个组中的所有引用都具有相同的引用。 举例来说,含义是:

1应该是A

2应该是B

3应该是D

如果不是,那么我想返回sub_id的列表。 因此对于上面的表格,我的结果将是:1

理想情况下,在这些条件下,引用将在一个单独的表中,且sub_id为PK,但是在继续进行数据库重构之前,我需要首先修复大量数据集。

3 个答案:

答案 0 :(得分:1)

您可以使用以下方法:

select t.sub_id
from YourTable t
group by t.sub_id
having max(t.reference) <> min(t.reference)

更改YourTable以适合。

答案 1 :(得分:0)

您是否正在寻找简单的汇总?

select sub_id
from table t
group by sub_id
having count(distinct reference) > 1;

答案 2 :(得分:0)

您想要的查询:

SELECT sub_id
FROM test_sub
GROUP BY sub_id HAVING count(DISTINCT reference) > 1
;

这是我用来测试的内容:

CREATE TABLE `test_sub` (
  sub_id int(11) NOT NULL,
  reference varchar(45) DEFAULT NULL
);

INSERT INTO test_sub (sub_id, reference) VALUES
(1, 'A'),
(1, 'A'),
(1, 'A'),
(1, 'A'),
(1, 'C'),
(2, 'B'),
(2, 'B'),
(3, 'D'),
(3, 'D'),
(3, 'D'),
(4, 'E'),
(4, 'E'),
(4, 'E'),
(5, 'F'),
(5, 'G')
;