我有数据库描述。在这种情况下,我必须从一行复制到另一行。 所有3行的产品ID相同,但语言ID不同。我如何从产品ID 157或任何其他的行复制字段描述,语言ID为1到行,其中是产品ID 157(有很多不同的ID),语言ID是7.
有人可以通过一个sql命令帮助我对所有产品ID进行操作
非常感谢。
答案 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),因为您无法从表中选择你正在更新。