所以,我有一个表,其中个人(person_id)有多行(最多4行),列的值(value_column)可以= 0或1
我想编写一段代码,为每个person_id返回一行,其中value_column的值仅为0或仅为1(即使它们每行可能有3行或4行)
它可能是一行简单的代码,但对于那些SQL经验较少的人来说,这几乎是不可能的!
编辑:这是一个快速的线条样本:
person_id value_column
A 0
A 1
A 0
B 0
B 0
B 0
B 0
C 1
C 1
C 1
我希望代码行返回以下内容:
person_id value_column
B 0
C 1
答案 0 :(得分:2)
你可以尝试这样的事情
select distinct * from table1
where person_id in
( select person_id
from table1
group by person_id
having count(distinct value_column) <= 1
)
内部查询,只会返回仅存在一个person_id
的{{1}},而value_column
完成同样的事情,然后外部查询只选择那些person_id的一切。
答案 1 :(得分:0)
select * from myTable where person_id not in
(select a.person_id from myTable a, myTable b
where a.person_id = b.person_id
and a.value_column <> b.value_column)
获取具有不同价值观的人,然后获取不在第一次查询中的人。
或更快更好:
select person_id, min(value_column)
from myTable
group by person_id
having min(value_column)=max(value_column)