0

我有一家电子商务商店,每周一次,仓库会在另一张桌子上放一次只改变价格的产品。如何用另一个表中所选产品的新价格更新第一个表中的价格?如果不能只使用 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)
4

2 回答 2

1
UPDATE product_catalogue pc,product_catalogue_updated pcu 
SET pc.price = pcu.new_price 
WHERE pc.product_id = pcu.product_id

在使用此查询之前备份您的数据库

于 2012-10-21T19:40:50.883 回答
1

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

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
于 2012-10-21T19:40:56.553 回答