MySql-多个嵌套AND子句
我正在尝试从以下查询中获取结果,其中我有两个基于此表嵌套的AND子句:MySql-多个嵌套AND子句,mysql,Mysql,我正在尝试从以下查询中获取结果,其中我有两个基于此表嵌套的AND子句: +------+------+--------------+ | s_id | q_id | value_text | +------+------+--------------+ | 3 | 8 | BANK00236656 | | 4 | 10 | f5fsd0236656 | | 5 | 14 | 87749854 | +------+------+------------
+------+------+--------------+
| s_id | q_id | value_text |
+------+------+--------------+
| 3 | 8 | BANK00236656 |
| 4 | 10 | f5fsd0236656 |
| 5 | 14 | 87749854 |
+------+------+--------------+
下面的WHERE子句不会产生任何结果,即使它应该输出“3”和“5”
当我更改第二个AND to OR(将两个子句连接在括号之间的AND to OR)时,查询会输出正确的结果
关于如何链接多个应该为真的子句,有什么建议吗
谢谢 一个
和
运算符是TRUE
,因为它的两个操作数是TRUE
。现在来看你的子句,它永远不会发生,因为列q_id
不能同时是8
和14
您需要的是或操作员。如果或
运算符的至少一个操作数为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
其中(自定义_字段_values.q_id='8'和自定义_字段_values.value_text='BANK00236656')
或(自定义_字段_values.q_id='14'和自定义_字段_values.value_text='87749854')
按评估排序\u完成。评估\u分数说明
请注意,各个条件(在括号之间)仍然使用和运算符,因为这两个条件都应该满足。不应该是或。其中(条件和条件和条件…)或(条件和条件和条件…)
谢谢,但我需要弄清楚如何用AND语句将它们链接起来。@Mouse:我想你把AND太多地理解为自然语言运算符了。人们确实可以说“我想要咖啡和饼干”。但是如果你查询一个数据库,你会说“我想要所有类型是咖啡或饼干的东西”。你想要一个or。然后,如需进一步帮助,请参阅:
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