首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这两个查询中的不同之处(存在于NOT,而不存在于LIKE)

这两个查询中的不同之处(存在于NOT,而不存在于LIKE)
EN

Stack Overflow用户
提问于 2015-10-26 09:07:56
回答 1查看 88关注 0票数 2

我很难理解这两个查询之间的区别。不给出相同的输出,只是结果略有不同。这两个查询不是相同的,只是倒过来的吗?您可以在最后一个子查询中看到不同之处。

代码语言:javascript
复制
SELECT *
FROM[dbo].[MNO International AB$Item] t1
WHERE 
    t1.[Item Type] = 0
    AND (
            NOT EXISTS(SELECT * FROM [dbo].[MNO International AB$Item Cross Reference] t2 WHERE t2.[Item No_] = t1.No_ AND t2.[Cross-Reference Type No_] = 'EAN13' AND t2.[Cross-Reference No_] <> '' AND t2.[Cross-Reference Type] = 3)
            OR t1.[Statistics Group] = 0
        ) --Result: 2178

    AND NOT EXISTS 
                (SELECT * FROM [dbo].[MNO International AB$Master] t2 
                 WHERE t1.[Master No_] = t2.No_ 
                 AND t2.[Collection No_] LIKE 'NEW-NOS'
                 )

另一个查询

代码语言:javascript
复制
SELECT *
FROM[dbo].[MNO International AB$Item] t1
WHERE 
    t1.[Item Type] = 0
    AND (
            NOT EXISTS(SELECT * FROM [dbo].[MNO International AB$Item Cross Reference] t2 WHERE t2.[Item No_] = t1.No_ AND t2.[Cross-Reference Type No_] = 'EAN13' AND t2.[Cross-Reference No_] <> '' AND t2.[Cross-Reference Type] = 3)
            OR t1.[Statistics Group] = 0
        ) --Result: 2178

    AND EXISTS 
                (SELECT * FROM [dbo].[MNO International AB$Master] t2 
                 WHERE t1.[Master No_] = t2.No_ 
                 AND t2.[Collection No_] NOT LIKE 'NEW-NOS'
                 )
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-26 09:38:28

我认为结果会不一样。因为:

代码语言:javascript
复制
NOT(A = B AND C <> D)
= NOT(A = B) OR NOT(C <> D)
= A <> B OR C = D

返回查询:

代码语言:javascript
复制
NOT EXISTS (t1.[Master No_] = t2.No_ AND t2.[Collection No_] NOT LIKE 'NEW-NOS')
= EXISTS (t1.[Master No_] <> t2.No_ OR t2.[Collection No_] LIKE 'NEW-NOS')
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33341983

复制
相关文章

相似问题

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