0

下面的第一个有效,但是,只是想看看是否有更好的方法......

如果我试图查找以“C”开头且标志为 2 或状态为 9 的所有记录,是否需要将“C”标准合并两次?

IE,

"SELECT * FROM mytable WHERE name like 'C%' AND flag = 2 OR name like 'C%' AND status = 9"

或者,有没有一种更快的方法来编写它,这样我只需要设置一次'C%'?

4

2 回答 2

1

逻辑上,ANDOR是相互分配的,即

a & (b | c) = (a & b) | (a & c)

这意味着您的条件可以重写为

name LIKE 'C%' AND (flag = 2 OR status = 9)
于 2010-05-30T14:52:33.440 回答
1

OR 的优先级低于 AND,因此您需要括号。

WHERE name LIKE "C%" AND (flag = 2 OR flag = 9)

您还可以检查一组值的成员资格

... AND 标志 IN (1, 9)

于 2010-05-30T14:54:24.933 回答