【发布时间】:2019-07-04 02:24:03
【问题描述】:
我正在阅读有关 OR 运算符的文档,上面写着:
大多数更好的 DBMS 甚至不会评估第二个条件 如果第一个条件已经满足,则为 OR WHERE 子句。 (如果 满足第一个条件,无论 第二个条件)。
SELECT prod_code, prod_price
FROM Articles
WHERE Code = '1' OR Code = '2'
这是否意味着如果 Code = '1' 查询将返回所有带有 '1' 的值,忽略第二个条件 WHERE Code = '2'。
我在 SQL Server 上对此进行了测试,它返回所有值为 1 的值和所有值为 2 的值,所以实际上是 2 行......
所以我在这里有点困惑?
谢谢 干杯
【问题讨论】:
-
这意味着如果一行满足
Code = 1的条件,那么它不会评估该行的子句Code = 2。这并不意味着它会停止检查其余行。 RDBMS 仍将返回满足其中任一要求的每一行。 -
@Larnu aaa 该行是关键!书中没有这部分句子! :) 谢了哥们!因此,如果发现 Code=1,RDBMS 将转到下一行,不会检查同一行两次!谢谢
-
这可能意味着 不同 列的条件,例如
colA = 'foo' or colB between 1 and 5
标签: sql sql-server sql-server-2008 logical-operators