如何选择以前没有使用的唯一ID

时间:2015-04-17 06:55:15

标签: mysql select

我正在尝试编写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);

和不同身份证的总数。

1 个答案:

答案 0 :(得分:1)

听起来像是NOT EXISTSSQL 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的行,其中idresult = 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