当产品ID相同时,将数据复制到列

时间:2016-01-11 15:53:17

标签: mysql sql

我需要复制同一产品的产品说明规格(列名:product_description_second),但不同的语言ID(两者都是英文不同的国家/地区)。

所以我有:

UPDATE products_description SET
    products_description_second = products_description_second
WHERE language_id=3 AND products_id = products_id 

但这没有意义,因为我并没有真正确定哪个描述正在复制到哪个,但我只想将language_id 3设置为与语言ID 1相同。

并且在我的约束中我设置了product_id = product_id哪个没有意义,或者我没有想到

2 个答案:

答案 0 :(得分:1)

你只需要自己加入表

UPDATE pd1 SET
     pd1.products_description_second = pd2.products_description_second
from products_description pd1 
    join products_description pd2 on pd1.products_id = pd2.products_id 
                                and  pd2.language_id = 3
WHERE pd2.language_id = 1

类似这样的事情,请在更新前选择以确保它是您要求的,这是您在T-SQL中的操作方式

答案 1 :(得分:0)

也许这个例子可以帮助你区分源表和目标表,即使它们是相同的:

update 
    product_description dest_pd 
  set 
    dest_pd.product_description_second = (
      select 
          src_pd.product_description_second 
        from 
          product_description src_pd 
        where 
          src_pd.products_id = dest.products_id
          and src_pd.language_id = 3
  )