根据产品ID和语言ID将字段内容从一行复制到另一行

时间:2015-08-26 10:43:30

标签: sql copy

我有数据库描述。在这种情况下,我必须从一行复制到另一行。 所有3行的产品ID相同,但语言ID不同。我如何从产品ID 157或任何其他的行复制字段描述,语言ID为1到行,其中是产品ID 157(有很多不同的ID),语言ID是7.

有人可以通过一个sql命令帮助我对所有产品ID进行操作

非常感谢。

2 个答案:

答案 0 :(得分:0)

如果我理解你的问题,请使用下面的

update my_table
  set description_field = (select description_field
                           from my_table
                           where product_id = 157 and language_id = 1)
where product_id = 157 and language_id = 7

请确保inner query只返回一个description

答案 1 :(得分:0)

假设您的表名为“description”

UPDATE description d1
INNER JOIN description d2
ON d1.product_id = d2.product_id
AND d2.language_id = 1
SET d1.description1 = d2.description1,
    d1.description2 = d2.description2,
    d1.description3 = d2.description3
WHERE d1.language_id != 1

它会将language_id设置为除1之外的所有行的description1,description2和description3字段更新,其中description1,description2和description3来自具有相同product_id的行,但其中language_id设置为1。

可能有DBMS,您可以使用子查询而不是INNER JOIN,但它在MySQL中不起作用,会导致错误(#1093),因为您无法从表中选择你正在更新。