我可以在一个MySQL查询中使用多个WHERE语句吗?

时间:2013-01-05 20:07:29

标签: php mysql sql

免责声明:我知道可以将AND和OR运算符添加到单个WHERE语句中,这通常是正确的方法...

但是,我正在基于各种外部因素动态构建复杂查询。出于可读性和可维护性的目的,如果我可以为某些始终需要满足的条件设置一个WHERE语句,然后再添加另一个(第二个)将根据具体情况而改变,那将会更加整洁。

一个。这是有效的MySQL吗? B.出于某种特殊原因这是一个可怕的想法吗?

这是一个简化的例子:

<?php 
$query = "
SELECT a,b,c
FROM table1
LEFT JOIN table2 on foo=bar
LEFT JOIN table3 on foo2=bar2
...
WHERE foobar = something_that_is_consistent 
AND boobar = something_else_consistent
...
";

if ( $something_special ) {
$query .= "WHERE ..."
}

if ( $something_else_special ) {
$query .= "WHERE ..."
}

这是一个简单的例子,但希望它能够证明我在想什么,以及我是如何避免在查询字符串中避免大的嵌套条件。

3 个答案:

答案 0 :(得分:3)

没有。使用AND组合WHERE中的多个子句。

答案 1 :(得分:1)

不,你不能。但您可以轻松调整代码,以便记住您是否已添加WHERE子句并随后使用AND(或OR

答案 2 :(得分:1)

您的WHERE应为1,然后使用AND

   <?php 
   $query = "
 SELECT a,b,c
 FROM table1
 LEFT JOIN table2 on foo=bar
 LEFT JOIN table3 on foo2=bar2
 ...
 WHERE foobar = something_that_is_consistent 
 AND boobar = something_else_consistent
 ...
 ";

if ( $something_special ) {
 $query .= "AND ..."
 }

 if ( $something_else_special ) {
 $query .= "AND ..."
 }