duankan8739 2012-10-21 19:34
浏览 31
已采纳

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

I have an e-commerce shop and once a week the warehouse puts in another table only products that have changed their price. How to update the prices in the first table with the new prices of the selected products in the other table? Feel free to use also some php if it's not possible to do with mysql only.

I tried this command but when the SELECT founds no matches it changes my original prices to 0 instead of leaving them untouched.

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

2条回答 默认 最新

  • dousi8237 2012-10-21 19:40
    关注

    This is one possible solution:

    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
    )
    

    This might work as well:

    This doesn't work (but would be nice):

    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
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥15 vba使用jmail发送邮件正文里面怎么加图片
  • ¥15 vb6.0如何向数据库中添加自动生成的字段数据。