SQL UPDATE值基于其他行的值

时间:2013-09-23 16:36:35

标签: mysql

当前表:

id_product     id_shop       id_lang       description
---------------------------------------------------------
1                1             est         black
2                1             eng         brown
3                1             rus         red
1                2             est
2                2             eng
3                2             rus

预期产出:

id_product     id_shop       id_lang       description
---------------------------------------------------------
1                1             est         black
2                1             eng         brown
3                1             rus         red
1                2             est         black
2                2             eng         brown
3                2             rus         red

我需要将缺少的'description'从id_lang 1复制到id_lang 2,用于各自的产品和语言。

我有野蛮但这次超时并且结果出错:

UPDATE `ps_product_lang` t1, `ps_product_lang` t2
SET t1.description = t2.description
WHERE t1.id_shop = 2
AND t2.id_shop = 1

如果你能在我错的地方纠正我,我将不胜感激。

2 个答案:

答案 0 :(得分:0)

这应该有效:

UPDATE `ps_product_lang` t1 join `ps_product_lang` t2 on 
t1.id_lang = t2.id_lang
SET t1.description = t2.description
WHERE t1.id_shop = 2
AND t2.id_shop = 1

答案 1 :(得分:0)

我认为您可以使用id_lang列合并说明,如下所示

UPDATE `ps_product_lang` t1
INNER JOIN `ps_product_lang` t2
ON t1.`id_lang` = t2.`id_lang`
SET t1.`description` = t2.`description`
WHERE t1.`description` IS NULL

如果列包含空值

,您可能需要将IS NULL更改为= ''