2012-06-27 77 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