繁体   English   中英

SQL Select:匹配 id 的行是否都具有相同的列值

[英]SQL Select: Do rows matching id all have the same column value

我有一张这样的桌子

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,但我需要先修复大量数据集,然后才能继续重组数据库。

您可以使用以下方法:

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

更改YourTable以适应。

您在寻找简单的聚合吗?

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

你想要的查询:

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')
;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM