我试图从以下查询中获得结果,其中我根据此表嵌套了两个AND子句:
+------+------+--------------+
| s_id | q_id | value_text |
+------+------+--------------+
| 3 | 8 | BANK00236656 |
| 4 | 10 | f5fsd0236656 |
| 5 | 14 | 87749854 |
+------+------+--------------+
下面的WHERE子句即使输出" 3"和" 5"。
WHERE 1
AND
(custom_field_values.q_id = '8' AND custom_field_values.value_text = 'BANK00236656')
AND
(custom_field_values.q_id = '14' AND custom_field_values.value_text = '87749854')
ORDER BY evaluation_complete.eval_score DESC
当我将第二个AND更改为OR(连接括号之间的两个子句的那个)时,查询会输出正确的结果。
有关如何链接应该为真的多个AND子句的任何建议吗?
谢谢!
答案 0 :(得分:1)
AND
运算符TRUE
,其两个操作数为TRUE
。现在为您的子句永远不会发生,因为列q_id
不能同时为8
和14
。
您需要的是OR
运营商。如果OR
运算符的至少一个为TRUE
,则TRUE
运算符为WHERE (custom_field_values.q_id = '8' AND custom_field_values.value_text = 'BANK00236656')
OR (custom_field_values.q_id = '14' AND custom_field_values.value_text = '87749854')
ORDER BY evaluation_complete.eval_score DESC
。
那应该是:
AND
请注意,各个条件(括号之间)仍然使用{{1}}运算符,因为两个条件都应该满足。