更新字段mysql表,其中包含来自其他行的值,用于相同的产品ID

时间:2015-03-03 13:31:40

标签: php mysql sql database

我需要使用另一行中使用的值更新数据库表。 我有一个包含4000个产品的数据库,每个产品有3行,每种语言1个(我使用3种语言)。

现在我需要将产品标题从荷兰语复制到英文产品行的标题字段和同一产品标识的法国产品行。英语和弗伦什的一些标题字段是空的,但不是它们是空的。

所以我有这个领域 product_id; language_id; PRODUCT_TITLE

任何人都可以帮我处理我需要为所有4000种产品执行此操作的SQL吗?

谢谢,亲切的问候 皮特

ps_product_lang是产品表的名称
数据库是MySQL

id_product  int(10) unsigned    NO  PRI NULL     
id_shop int(11) unsigned    NO  PRI 1    
id_lang int(10) unsigned    NO  PRI NULL     
description text    YES     NULL     
description_short   text    YES     NULL     
link_rewrite    varchar(128)    NO      NULL     
meta_description    varchar(255)    YES     NULL     
meta_keywords   varchar(255)    YES     NULL     
meta_title  varchar(128)    YES     NULL     
name    varchar(128)    NO  MUL NULL     
available_now   varchar(255)    YES     NULL     
available_later varchar(255)    YES     NULL     

1 个答案:

答案 0 :(得分:1)

这些方面的东西应该有效。

UPDATE ps_product_lang p1
   SET name = 
       (SELECT name
          FROM (SELECT * FROM ps_product_lang) p2
         WHERE p2.`id_product` = p1.`id_product`
           AND p2.`id_lang` = 6)
 WHERE `id_lang` != 6

您需要额外的嵌套选择以防止MySQL报告以下错误:

错误代码:1093 您无法指定目标表' p1'用于FROM子句中的更新