2013-02-24 52 views
0

我想通过删除其中的第一个字来使用以下代码更新我的post_title列。mySQL查询错误无法更新FROM子句

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

可能重复:http://stackoverflow.com/questions/45494/mysql-error-1093-cant-specify-target-table-for-update-in-from-clause – 2013-02-24 09:46:23

+1

错误消息说,所有。您无法在一次SQL调用中更新并从同一个表中进行选择。 – Sirko 2013-02-24 09:46:27

+0

我意识到尽可能多,但我不熟悉mySQL,因此我为什么要求一些帮助。 – Maaz 2013-02-24 09:53:13

回答

1

以下应该工作。

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

似乎不起作用。出现语法错误。我认为它在“SUBSTRING”前面缺少一个括号,所以我添加了它,并且仍然出现了一个语法错误,突出显示了'WHERE post_type ='post')' – Maaz 2013-02-24 09:51:16

+0

噢,删除端括号似乎已经解决了问题: ) – Maaz 2013-02-24 09:54:41

+0

啊,woops,现在更新了SQL。 – 2013-02-24 11:57:22

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' 
+0

出现这个错误'列'post_title'在字段列表中是不明确的' – Maaz 2013-02-24 09:52:44

+0

看到我更新的答案。 – 2013-02-24 09:53:25

相关问题