任何想法如何复制:name,content from language_id = 1的行到language_id = 2的行? SQL命令应该如何?
我想要实现:
答案 0 :(得分:1)
答案 1 :(得分:1)
假设您要将产品从lang1更新为lang 2
update a set
a.name = b.name,
a.content = b.content
from tablea a
join tablea b on a.productid = b.productid
where a.language_id = 2
and b.language_id = 1
当然这会对表格中的每一行都这样做,所以如果你想限制它,那么一定要用productids来限制它
答案 2 :(得分:0)
您的意思是将所有 language_id=1
行复制到language_id=2
行吗?
我对MySQL语法的了解很差,所以我不敢给你所有的codez,但至少你会发现以下方法很有用:
使用如下结构创建临时表:
product_id int,
name (varchar?)
content (varchar?)
即包括product_id
以及您需要复制的所有列。
使用language_id=1
数据填充临时表。可能是这样的:
INSERT INTO temp_table
SELECT product_id, name, content
FROM orig_table
WHERE language_id = 1
使用临时表中的相应数据更新原始表中language_id=2
的那些行。它可能看起来像这样:
UPDATE orig_table
SET
name = temp_table.name,
content = temp_table.content
FROM temp_table
WHERE orig_table.product_id = temp_table.product_id
AND orig_table.language_id = 2
将临时表中的行插入到原始表中,其中产品没有language_id=2
。像这样:
INSERT INTO orig_table (product_id, language_id, name, content)
SELECT product_id, 2, name, content
FROM temp_table
WHERE NOT EXISTS (
SELECT 1 FROM orig_table
WHERE product_id = temp_table.product.id
AND language_id = 2
)
如果您不想更改现有的language_id=2
数据,则应省略步骤#3,您可能还希望以选择language_id=1
的方式修改步骤#2仅适用于缺少language_id=2
的产品的数据。