MySql - 多个嵌套的AND子句

时间:2017-06-30 13:49:46

标签: mysql

我试图从以下查询中获得结果,其中我根据此表嵌套了两个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子句的任何建议吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

AND运算符TRUE,其两个操作数TRUE。现在为您的子句永远不会发生,因为列q_id不能同时为814

您需要的是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}}运算符,因为两个条件都应该满足。