0

我正在尝试使用以下代码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

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

4

2 回答 2

1

以下应该工作。

UPDATE wp_posts SET post_title = SUBSTRING(post_title, LOCATE(' ', post_title)+1) WHERE post_type = 'post';
于 2013-02-24T09:48:24.220 回答
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'
于 2013-02-24T09:47:49.923 回答