使用数组更新sql值,该数组有几次出现的项目

sin*_*dam 6 php sql query-optimization

在我编写购物网站时,我需要更新产品库存.但问题是,自然购物车可以拥有相同的项目几次.更新它的最佳方法是什么?

我试过,IN但以下SQL查询返回3项.

SELECT * 
FROM  `products` 
WHERE id
IN ( 3, 4, 4, 6 ) 
LIMIT 0 , 30
Run Code Online (Sandbox Code Playgroud)

这是我的解决方案,但我不认为这是最好的解决方案.

$cart = array(1,3,4,4,5,8,22,22);
$itemlist = array_count_values($cart);

foreach($itemlist as $itemid=>$ocurrence){
    $SQL = "UPDATE products SET stock = stock-".$ocurrence." WHERE id = ".$itemid;
    mysql_query($SQL);
}
Run Code Online (Sandbox Code Playgroud)

小智 1

你可以这样做:

SELECT * FROM menu WHERE item_id = 1
  UNION ALL
SELECT * FROM menu WHERE item_id = 1
  UNION ALL
SELECT * FROM menu WHERE item_id = 2
Run Code Online (Sandbox Code Playgroud)

检查此链接: MySQL 表 -> 您可以在同一个查询中多次返回同一行吗?