Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySql-多个嵌套AND子句_Mysql - Fatal编程技术网

MySql-多个嵌套AND子句

MySql-多个嵌套AND子句,mysql,Mysql,我正在尝试从以下查询中获取结果,其中我有两个基于此表嵌套的AND子句: +------+------+--------------+ | s_id | q_id | value_text | +------+------+--------------+ | 3 | 8 | BANK00236656 | | 4 | 10 | f5fsd0236656 | | 5 | 14 | 87749854 | +------+------+------------

我正在尝试从以下查询中获取结果,其中我有两个基于此表嵌套的AND子句:

+------+------+--------------+ 
| 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