当前位置:  开发笔记 > 编程语言 > 正文

如果表已加入,Where Statement是否重要?

如何解决《如果表已加入,WhereStatement是否重要?》经验,为你挑选了1个好方法。

我想知道两个查询是否总会返回相同的结果.他们是平等的吗?

SELECT OT_ACC_NO , ACC_NO FROM ACCOUNTS
JOIN OTHER_TABLE ON OT_ACC_NO = ACC_NO
WHERE ACC_NO IS NOT NULL 

SELECT OT_ACC_NO , ACC_NO FROM ACCOUNTS
JOIN OTHER_TABLE ON OT_ACC_NO = ACC_NO
WHERE OT_ACC_NO IS NOT NULL

Gordon Linof.. 5

两者是等价的.或许更令人惊讶的是该WHERE条款是不必要的.所以,这是等价的:

SELECT OT_ACC_NO, ACC_NO
FROM ACCOUNTS JOIN
     OTHER_TABLE
     ON OT_ACC_NO = ACC_NO;

为什么?因为INNER JOIN只有在ON条件为时才返回行.如果任一值为NULL,则比较返回NULL,将其视为false.

我应该注意,虽然最终结果是相同的,但查询的执行计划可能不一样.



1> Gordon Linof..:

两者是等价的.或许更令人惊讶的是该WHERE条款是不必要的.所以,这是等价的:

SELECT OT_ACC_NO, ACC_NO
FROM ACCOUNTS JOIN
     OTHER_TABLE
     ON OT_ACC_NO = ACC_NO;

为什么?因为INNER JOIN只有在ON条件为时才返回行.如果任一值为NULL,则比较返回NULL,将其视为false.

我应该注意,虽然最终结果是相同的,但查询的执行计划可能不一样.

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有