如何在sql中从表替换到另一个表期间处理空值?

时间:2012-10-21 19:34:03

标签: php mysql sql

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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