SQL查询错误#1093 - 无法指定目标表' a'用于FROM子句中的更新

时间:2015-09-07 14:08:29

标签: mysql wordpress

在我的WordPress数据库中,我正在执行这个更简化的查询的版本:

    UPDATE wp_postmeta a
    SET    a.meta_value = 'roses'
    WHERE  a.meta_key = 'flowers' AND
           EXISTS (SELECT *
                   FROM   wp_postmeta b
                   WHERE  a.post_id = b.post_id AND 
                          b.meta_key = 'month' AND 
                          b.meta_value = 'august')

我一直收到以下错误:

   #1093 - You can't specify target table 'a' for update in FROM clause 

我在处理数据库查询方面经验有限,无法理解如何修复查询。

非常感谢任何帮助。

更新#1:答案由@Rahul提供。

1 个答案:

答案 0 :(得分:1)

执行以下UPDATE JOIN。使用相同的表格执行SELF JOIN

UPDATE wp_postmeta a
JOIN wp_postmeta b ON a.post_id = b.post_id AND 
                      b.meta_key = 'month' AND 
                      b.meta_value = 'august'
SET    a.meta_value = 'roses'
WHERE  a.meta_key = 'flowers';