我想更改Wordpress中所有帖子的作者名称(1000篇文章(。目前,我所有帖子的作者都是相同的(Johnny user,你的id=1(。问题是,我想运行一个MySQL查询,将帖子的作者随机更改为另一个用户。目前,我有10个用户,我想把他们随机作为帖子的作者,每个用户都应该是大约100个帖子的作者。
我知道我可以这样改变所有的作者,但这远不是我想要实现的:
UPDATE wp_posts SET post_author='2' WHERE post_author='1';
让我们逐步了解需求:
-
我们需要每个帖子都是一个随机的作者ID;
-
你有10个作者(id 1到10(;
-
因此,对于每个帖子,我们需要一个介于1到10之间的随机数字作为作者ID;
-
快速搜索mysql随机会在mysql文档中找到一个热门:
获得范围i<=中的随机整数RR<j、 使用表达式FLOOR(i+RAND((*(j−i((
还有很多关于SO的例子,大多数都使用这种方法,例如:
- 如何获取mysql的随机整数范围
- MySQL获取两个值之间的随机值
- 具有1-5之间的随机值的MYSQL INSERT
所以现在我们只需要将其合并到UPDATE
中。像这样的东西应该可以做到:
UPDATE wp_posts SET post_author = FLOOR(1 + RAND() * 9);
更新
事实上,搜索mysql更新随机会发现另一个问题已经回答了这个问题,我已经投票将其作为重复关闭。
使用范围中的随机数更新所有记录
我不能给你写一个工作查询,但你可以像这样手动尝试:
我的方法是首先获取想要更改autor的帖子的所有ID,因为你也必须将它们包含在WHERE中。
然后你可以使用Excel或LibreOfficeCalc,例如,我在类似的任务中使用了它好几次,你可以生成一行SQL查询,分为部分/列,其中具有post ID的部分将是一个单独的列,你可以用导出中的post ID填充。你可以在一些在线实用程序或文本编辑器中随机排列它们的顺序。
然后你用帖子作者ID填充/复制其余的列——就像你有10个一样,假设你有2000个帖子/帖子ID,那么前200个将有作者ID";1〃;,另一个200作者ID";2等等。
所以最后,Excel中会有2000行,看起来像:
UPDATE wp_posts SET post_author='2' WHERE post_author='1' AND post_id='1';
UPDATE wp_posts SET post_author='2' WHERE post_author='1' AND post_id='50';
UPDATE wp_posts SET post_author='2' WHERE post_author='1' AND post_id='145';
UPDATE wp_posts SET post_author='2' WHERE post_author='1' AND post_id='14';
...
UPDATE wp_posts SET post_author='3' WHERE post_author='1' AND post_id='16';
...
不确定语法,但只是为了表明想法。。。。
当你生成这些行时,你可以将它们从Excel导出回txt文件,也许可以通过删除一些额外的空格来纠正语法,这取决于导出,你可以在备份后尝试。
我完全知道这可以通过某种脚本方式完成,但我认为这也会奏效。