选择没有分配给它的“东西”的用户数量

时间:2018-05-24 10:14:16

标签: sql

我有一个简化的表格,显示我的问题
名字动物
比尔狗
比尔猫
比尔鱼
约翰猫
约翰费什
萨拉狗
萨拉猫
马克鱼

我想要没有狗的人数。我试过这个查询。

select count(distinct Name) from Table
where Animal <> 'Dog'



但它返回4而不是预期2.我做错了什么?

3 个答案:

答案 0 :(得分:1)

使用not exists

select count(distinct t.name) as counts
from table t
where not exists (select 1 from table where name = t.name and animal = 'Dog');

对于您当前的查询,您正在根据animal名称过滤单个记录,该记录不会产生所需的结果,因为它应与name列一起生成。

答案 1 :(得分:1)

您的查询返回了除狗以外的任何动物的名字数。

select distinct name
from table t1
where not exists
(
    select 1 from table t2 where t1.name=t2.name and t2.Animal='Dog'
)

答案 2 :(得分:0)

你的条件“Animal&lt;&gt;'dog'”正在过滤行而不是名称。

请尝试以下查询

cat die-fuer-das.png.ocr-result.txt 
die fur das