我正在尝试编写select语句。对不起我的英语不好,我无法解释它的问题标题。
您还可以在此处查看我的问题SQLFIDDLE
我有价值观;
values (22222222222, "john", 0);
values (11111111111, "nic", 1);
values (22222222222, "john", 0);
values (22222222222, "john", 1);
values (44444444444, "tom", 0);
values (33333333333, "hans", 0);
values (11111111111, "nic", 1);
values (33333333333, "hans", 0);
values (33333333333, "hans", 0);
我想选择result = 0的位置,但是如果其中一个id的结果= 1我也不想要它。
选择后我期待结果;
values (44444444444, "tom", 0);
values (33333333333, "hans", 0);
和不同身份证的总数。
答案 0 :(得分:1)
听起来像是NOT EXISTS
(SQL Fiddle demo)的工作:
select *
from myTable t
where result = 0
and not exists (
select 1
from myTable t2
where t2.id = t.id
and t2.result = 1
)
其内容与其外观完全相同。选择result = 0
的行,其中id
与result = 1
的行没有一行。
将其分组和计数就像添加聚合和分组(SQL Fiddle demo)一样简单:
select id, count(*)
from myTable t
where result = 0
and not exists (
select 1
from myTable t2
where t2.id = t.id
and t2.result = 1
)
group by id