如何在SQL(MySQL)中创建具有逻辑OR的条件,以便根据需要执行子条件?
例如:
SELECT * FROM \`mytable\` WHERE (\`a\` || \`b\` || \`c\`)
`a`是假的 `b`是真的 `c`为FALSE或TRUE
我想要MySQL:
1)得到'a` // ok,`a`是假的
2)如果(`a`为TRUE)中断//没有休息
3)得到`b` // ok,`b`为TRUE
4)如果(`b`为TRUE)中断; //好的,打破了
答案 0 :(得分:1)
逻辑OR
已经表现出来了。
然而,对这些表达式的评估不一定是您所期望的,例如:数据库可能仍需要获取与表达式相关的所有行。具体而言,MySQL can't always use indexes if you use OR
。
BTW:您应该使用OR
,这是一种标准的SQL语法。 ANSI SQL中的||
(MySQL中的其他数据库和ANSI模式)连接字符串。
答案 1 :(得分:0)
如果它们是布尔字段请尝试使用此
SELECT * FROM `mytable` WHERE `a` OR `b` OR `c`
答案 2 :(得分:0)
要获得你想要的东西,你只需重新排序你的操作数。很快,由于OR的操作数为TRUE,因此不再进一步评估条件。要实现高性能,必须将最可能的操作数放在其他操作数之前。
如果a
为真,您不想休息吗?试试这个:
SELECT * FROM `mytable` WHERE `c` OR `b` OR `a`