php – mysql – if value = 0缩短where语句

我想知道是否有可能以优雅的方式根据某些变量值缩短查询.

例如:我有一个名为$var = 0的值,我想发送一个如下所示的查询

$query = "SELECT id,name,quantity FROM products WHERE quantity > 100";

但是$var!= 1我想发送一个这样的查询

$query = "SELECT id,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,quantity 
FROM products WHERE quantity > 100 AND id = '$var' ELSE id,quantity 
FROM products WHERE quantity > 100 END

但我不喜欢它 – 每个想法都会在某些问题中加倍查询.我可以这样做吗?

SELECT id,quantity 
FROM products WHERE quantity > 100 
CASE WHEN $var <> 0 THEN AND id = '$var'

它更短,并在需要时添加部分查询.当然,真正的查询要复杂得多,并且真正期望更短的语句.有人有想法吗?

如果我理解得好..
$query = "SELECT id,quantity FROM products WHERE quantity > 100";
if ( $var != 0 ) {
  $query .= " AND id = '$var'";
}

你喜欢它吗?

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...