首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >存在的地方的力学

存在的地方的力学
EN

Stack Overflow用户
提问于 2018-07-24 05:57:58
回答 1查看 33关注 0票数 0

谁能告诉我为什么这两个查询返回的行数不一样?

代码语言:javascript
复制
SELECT ProductSubcategoryID AS ProdSubID
FROM Production.Product
WHERE EXISTS ( 
    SELECT 1 
    FROM Production.Product 
    WHERE Weight IS NOT NULL 
)
代码语言:javascript
复制
SELECT ProductSubcategoryID AS ProdSubID
FROM Production.Product
WHERE Weight IS NOT NULL

可以在AdventureWorks中找到Production.Product

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-24 06:01:35

这些谓词与where子句中的谓词不同。

第一个查询将返回Production.Product中的每个ProductSubcategoryID,只要至少有一条记录的Weight不是null

虽然第二个查询将返回同一行中Production.Product中的每个ProductSubcategoryID,但Weight不是null

为了使查询等价,第一个查询中的子查询必须与外部查询相关-您可以这样做:

代码语言:javascript
复制
SELECT ProductSubcategoryID AS ProdSubID
FROM Production.Product As p0
WHERE EXISTS ( 
    SELECT 1 
    FROM Production.Product As p1
    WHERE p1.<row identifier> = p0.<row identifier>
    AND Weight IS NOT NULL )

其中,<row identifier>表示对于表中的每一行都是唯一的一个值(或一组值)。

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

https://stackoverflow.com/questions/51487732

复制
相关文章

相似问题

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