如何编写支持批量更新多个SKU库存的PHP SQL语句?
错误原因
你写的WHERE子句中用逗号分隔多个sku等值条件不符合SQL语法规范,SQL的WHERE子句多条件拼接需要使用AND/OR这类逻辑运算符,对于同字段匹配多个值的场景,使用IN操作符是最简便的实现方式。
正确写法(所有SKU统一更新为相同库存值)
你当前需要把40个指定SKU的库存统一设为1,直接使用IN操作符即可,把所有需要更新的SKU放到IN后的括号中用逗号分隔:
$sql="UPDATE bdam_eshop_productoptionvalues SET quantity=1 WHERE sku IN ('FR1640', 'FR1645', '此处补充剩余38个SKU')";
扩展:不同SKU更新为不同库存值的写法
如果后续遇到不同SKU需要设置不同库存的需求,可以用CASE WHEN实现批量更新,避免执行多次UPDATE语句:
$sql="UPDATE bdam_eshop_productoptionvalues SET quantity = CASE sku WHEN 'FR1640' THEN 1 WHEN 'FR1645' THEN 2 -- 按需添加更多SKU对应的库存值 ELSE quantity -- 保证不在列表中的SKU库存不变 END WHERE sku IN ('FR1640', 'FR1645', '其他需要更新的SKU')";
加WHERE条件是为了过滤不需要更新的行,提升语句执行效率。
内容的提问来源于stack exchange,提问作者Patrick Mc Cabe
相关产品推荐
相关产品推荐

