2013-02-24 57 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

相關問題