mySQL Query错误无法更新FROM子句

时间:2013-02-24 09:44:21

标签: mysql wordpress

我正在尝试使用以下代码通过删除其中的第一个单词来更新我的post_title列。

UPDATE wp_posts 
SET post_title = (
SELECT SUBSTRING(post_title, LOCATE(' ', post_title)+1) as post_title
FROM wp_posts
WHERE post_type = 'post');

仅使用此代码时

SELECT SUBSTRING(post_title, LOCATE(' ', post_title)+1) as post_title
FROM wp_posts
WHERE post_type = 'post';

它没有发出任何错误,它显示了所有更新过的行的列表,但是当我回到表中时,实际上没有更新任何内容。我假设那是因为这只是选择所有行或其他东西。这就是我尝试更新代码的原因,该代码无效并且出现以下错误

You can't specify target table 'wp_posts' for update in FROM clause

有人可以告诉我我的代码有什么问题

2 个答案:

答案 0 :(得分:1)

以下内容应该有效。

UPDATE wp_posts SET post_title = SUBSTRING(post_title, LOCATE(' ', post_title)+1) WHERE post_type = 'post';

答案 1 :(得分:0)

UPDATE  wp_posts a
        INNER JOIN wp_posts b
            ON a.post_type = b.post_type
SET     a.post_title = SUBSTRING(b.post_title, LOCATE(' ', b.post_title) + 1)
WHERE   b.post_type = 'post'