oracle 12c:where not vs where或

eimct9ow  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(341)

我需要选择rn=1或id为null的行。哪种情况更有效、更快速?

WHERE id IS NULL OR RN=1

WHERE NOT (id IS NOT NULL AND RN >1)
nle07wnf

nle07wnf1#

更好的方法是第一种方法,因为第二种方法将返回所有记录,即使 ID 不为空。
第二种方法如何提供所有记录?

WHERE NOT 
(id IS NOT NULL  
AND RN >1) -- this condition will be always false as you can not use > condition alone on rownum 

So <some_condition> AND False --> False

NOT (FALSE)  --> True

所以,你应该使用第一个条件: WHERE id IS NULL OR RN=1

相关问题