我的表格只包含2列ID
和product
,如下所示:
ID Product
-----------------
1 microsoft
0 cisco
2 cisco
7 cisco
3 vmware
0 adobe
0 microsoft
我需要编写一个列出id = 0的记录的查询,
ID Product
---------------
0 adobe
我不想列出的原因
ID Product
----------------
0 micrsoft
0 cisco
是因为他们有一个或多个具有产品ID的记录。
试过这个:
SELECT
[ProductID], [Product]
FROM [table] AS t1
WHERE ProductID = 0
AND NOT EXISTS (SELECT 1
FROM [table] AS t2
WHERE t1.ProductID = t2.ProductID
AND t2.ProductID <> 0)
似乎需要很长时间才能查询。 (表有2 000 000条记录)
答案 0 :(得分:2)
使用带group by
子句的简单having
:
select 0 as id, product
from [table] t
group by product
having min(id) = 0 and max(id) = 0;
答案 1 :(得分:0)
您只需要加入Product而不是ProductID:
SELECT [ProductID],[Product]
FROM [table] as t1
where ProductID=0
AND NOT EXISTS (
SELECT 1 FROM [table] AS t2
where t1.Product=t2.Product
AND t2.ProductID<>0
)
这转换为“在没有其他行的情况下,产品具有相同的名称,ID不是0”。