我有一个简化的表格,显示我的问题
名字动物
比尔狗
比尔猫
比尔鱼
约翰猫
约翰费什
萨拉狗
萨拉猫
马克鱼
我想要没有狗的人数。我试过这个查询。
select count(distinct Name) from Table
where Animal <> 'Dog'
但它返回4而不是预期2.我做错了什么?
答案 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