我需要复制同一产品的产品说明规格(列名: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哪个没有意义,或者我没有想到
答案 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
)