作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在问自己是否应该使用 <> ALL
或NOT IN
。看一下这两个示例查询:
SELECT PersonId FROM tabPerson
WHERE PersonId <> ALL(SELECT ParentId FROM tabPerson)
<小时/>
SELECT PersonId FROM tabPerson
WHERE PersonId NOT IN(SELECT ParentId FROM tabPerson)
这两个查询返回完全相同的结果。
现在我想知道 <> ALL
之间的主要区别是什么和NOT IN
是。有人有想法吗?
最佳答案
两个查询将产生完全相同的结果。即使子查询中查询的列包含NULL值,也没有任何区别。
我在这里比较了数据库中表上此类查询的几个执行计划,在每种情况下它们也完全相同。
因此,唯一的区别是其他开发人员的代码可读性/熟悉程度。这里的 NOT IN
表达式有一个明显的优势。 ALL
(同样还有 ANY
和 SOME
)关键字很少使用,并且会让其他开发人员感到陌生。
请参阅 MS Technet 文章 Comparison Operators Modified by ANY, SOME, or ALL 对这些关键字的进一步解释。 – 顺便说一句:本文的结论是,您问题中的两个陈述是等效的。
关于sql-server - NOT IN 与 <> ALL 之间的主要区别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36623938/
我是一名优秀的程序员,十分优秀!