MySQL查询WordPress帖子的批量更改作者



我想更改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文件,也许可以通过删除一些额外的空格来纠正语法,这取决于导出,你可以在备份后尝试。

我完全知道这可以通过某种脚本方式完成,但我认为这也会奏效。

最新更新