mysql更新表,其中包含表中的值

时间:2013-06-07 09:00:32

标签: mysql sql

我有一个具有这种结构的表

table: WP_ICL_TRANSLATIONS
translation_id | element_type | element_id | trid | language_code | source_language_code
18               post_page      15           14     en              Null
427              post_page      1228         14     zh-hans         en
20               post_page      17           15     en              Null
166              post_page      228          15     zh-hans         en

和另一个这样的表:

table: WP_POSTMETA
ID   | post_content
15     english content... 
1228   chinese content... 
17     english content... 
228    chinese content... 

我需要做的是用英文内容更新英文字段post_content。 帖子关系使用字段trid

存储在第一个表格中

所以,如果我想在WP_POSTMETA中更新id为15的记录,我必须转到WP_ICL_TRANSLATIONS表并搜索具有相同trid的另一个id,然后获取该id.With id我可以更新WP_POSTMETA表。

我现在有一个选择来获取英文ID的相应中文ID:

select element_id from wp_icl_translations where trid=(select trid from wp_icl_translations where element_id=779) and element_id<>779;

但我必须手动输入ID。

查询是否可以进行更新?也许使用时态表?

1 个答案:

答案 0 :(得分:1)

UPDATE WP_POSTMETA p1, WP_POSTMETA p2
     , WP_ICL_TRANSLATIONS t1, WP_ICL_TRANSLATIONS t2
   SET p1.post_content = p2.post_content
 WHERE t1.trid = t2.trid
   AND t1.element_id = p1.ID
   AND t2.element_id = p2.ID
   AND t1.language_code = 'en'
   AND t2.language_code = 'zh-hans'