0

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

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

A. 这是有效的 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 ..."
}

这是一个微不足道的例子,但希望它能说明我在想什么,以及我是如何尝试避免查询字符串中出现大块的嵌套条件的。

4

3 回答 3

3

不可以。用于AND在一个中组合多个子句WHERE

于 2013-01-05T20:08:26.353 回答
1

你不能。但是您可以轻松地调整您的代码,以便它记住您是否已经添加了一个WHERE子句并随后使用AND(or OR)

于 2013-01-05T20:09:35.670 回答
1

WHERE应该是一个然后使用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 ..."
 }
于 2013-01-05T20:12:55.447 回答