我正在尝试使用以下代码通过删除其中的第一个单词来更新我的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
有人可以告诉我我的代码有什么问题
答案 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'