首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SELECT/NOT EXISTS unique records 'condition‘

SELECT/NOT EXISTS unique records 'condition‘
EN

Stack Overflow用户
提问于 2015-07-21 01:04:41
回答 2查看 770关注 0票数 0

我的表只包含两列IDproduct,如下所示:

代码语言:javascript
复制
ID      Product
----------------- 
1       microsoft
0       cisco
2       cisco
7       cisco
3       vmware
0       adobe
0       microsoft

我需要编写一个仅列出具有id=0的记录的查询,

代码语言:javascript
复制
ID      Product
---------------
0       adobe 

我不想列出的原因

代码语言:javascript
复制
ID      Product
----------------
0       micrsoft
0       cisco 

是因为他们有一个或多个具有产品ID的记录。

我试过了:

代码语言:javascript
复制
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条记录)

EN

回答 2

Stack Overflow用户

发布于 2015-07-21 01:17:01

使用带有having子句的简单group by

代码语言:javascript
复制
select 0 as id, product
from [table] t
group by product
having min(id) = 0 and max(id) = 0;
票数 2
EN

Stack Overflow用户

发布于 2015-07-21 01:09:23

你只需要在产品上加入,而不是在ProductID上:

代码语言:javascript
复制
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的其他行”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31522250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档