免责声明:我知道可以将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 ..."
}
这是一个简单的例子,但希望它能够证明我在想什么,以及我是如何避免在查询字符串中避免大的嵌套条件。
答案 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 ..."
}