2012-06-27 76 views
0

由於幾個月前發生的事件,數千個author_ids已從我的論壇數據庫中刪除,我正在尋找恢復它們。因爲成千上萬的帖子沒有author_id,所以帖子的原作者與Guest_前綴一起變灰。使用更新功能批量更新記錄

What the forums currently looks like.

What the forums should look like.

反正here帖子表由的列的圖像。這是indexes的圖像。

我的解決辦法:

UPDATE posts 
SET author_id = 375, author_name = 'Peter' 
WHERE author_name = 'petersmileyface' 

以上是我試過,但是當我執行的代碼全部author_ids改爲375,這樣每一個崗位有「彼得」的AUTHOR_NAME。 w3schools指出,只有當我省略WHERE子句時,所有記錄纔會更新。

爲什麼我的解決方案不起作用?感謝您提前回答您的問題。

+2

我看不出什麼毛病你SQL,所以只能猜測你無意中執行了WHERE子句 - 它應該已經按照你的預期控制了更新。 – GDP

+1

你收到了什麼確切的錯誤?對author_id有沒有限制?如果你手動更新作者,你可以做一個更新... SELECT – Kermit

+0

@njk - 我其實沒有收到任何錯誤;它都運行良好。我只是檢查author_id,不,我不認爲有一個,但我可能是錯的,所以我截取了'索引'(添加到問題)。 – ple103

回答

2

你的要求沒有錯,你必須在執行過程中遺漏了一些東西。

對於海量更新,你可以使用另一種要求,用CASE語句,試試吧,也許你不會有問題了...

UPDATE posts 
SET 
    author_id = 
     CASE author_name 
     WHEN 'petersmileyface' THEN 375 
     WHEN 'portugaltrollface' THEN 412 
     END, 
    author_name = 
     CASE author_name 
     WHEN 'petersmileyface' THEN 'Peter' 
     WHEN 'portugaltrollface' THEN 'Pedro' 
     END; 
+0

這種方法部分起作用。當我使用這段代碼時(http://i.minus.com/isROd6tdh0h0N.PNG);也就是說,每個author_name和author_id字段分別變爲NULL和0。 – ple103

+0

我可以看到傑米還活着!至少我們救了他......每一個「NULL」都是你的屏幕對應於'author_name ='petersmileyface''或者你的問題發生在其他用戶身上? – zessx

+0

如果我使用上面的代碼,NULL值會發生在每個用戶身上。 – ple103