使用UPDATE函数批量更新记录

时间:2012-06-27 21:36:35

标签: mysql sql phpmyadmin forum

由于几个月前的事件,我的论坛数据库中已删除了数千个author_id,我希望将其恢复。由于数千个帖子没有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,因此每个帖子都有一个'Peter'的author_name。 w3schools声明,只有省略WHERE子句,才会更新所有记录。

为什么我的解决方案不起作用?谢谢你的高级答案。

1 个答案:

答案 0 :(得分: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;