我想知道是否可以根据某些变量值以优雅的方式缩短查询。
例如:我有一个名为的值$var = 0
,我想发送一个如下所示的查询:
$query = "SELECT id, name, quantity FROM products WHERE quantity > 100";
但是如果 $var != 1 我想发送这样的查询:
$query = "SELECT id, name, quantity FROM products WHERE quantity > 100 AND id = '$var'";
因此,根据 $var 的值,我想执行其中一个查询。它们仅与最后一个表达式不同。我找到了两种可能的解决方案,但它们并不优雅,我一点也不喜欢它们。
一个是用php制作的:
if ( $var == 0 ) {
$query_without_second_expression
} else {
$query_with_second_expression
}
第二个是在mysql中制作的:
SELECT WHEN '$var' <> 0 THEN id, name, quantity
FROM products WHERE quantity > 100 AND id = '$var' ELSE id, name, quantity
FROM products WHERE quantity > 100 END
但我不喜欢它 - 每个想法都会使查询加倍。我可以做这样的事情吗?
SELECT id, name, quantity
FROM products WHERE quantity > 100
CASE WHEN $var <> 0 THEN AND id = '$var'
它要短得多,并在需要时添加部分查询。当然,真正的查询要复杂得多,并且确实可以预期更短的语句。有人有想法吗?