我有一家电子商务商店,每周一次仓库将另外一张表放到价格改变的产品中。如何用另一个表中所选产品的新价格更新第一个表中的价格?如果不可能仅使用mysql,请随意使用一些php。

我尝试了此命令,但是当SELECT未找到匹配项时,它将原始价格更改为0,而不是保持不变。

UPDATE product_catalogue pc
SET pc.price = (SELECT new_price
                FROM product_catalogue_updated pcu
                WHERE pc.product_id = pcu.product_id)

最佳答案

这是一种可能的解决方案:

UPDATE product_catalogue pc
SET pc.price = (
  SELECT new_price
  FROM product_catalogue_updated pcu
  WHERE pc.product_id = pcu.product_id
)
WHERE pc.product_id IN (
  SELECT pcu.product_id FROM product_catalogue_updated pcu
)



这可能也起作用:


这不起作用(但会很好):

UPDATE product_catalogue pc
SET pc.price = (
  SELECT new_price
  FROM product_catalogue_updated pcu
  WHERE pc.product_id = pcu.product_id
) AS pprice
WHERE pprice IS NOT NULL

10-06 10:12