You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过MySQL批量随机分配WordPress千余篇文章的作者?

WordPress批量随机分配文章作者的MySQL实现

核心需求

将所有作者ID为1的文章,随机分配给另外10个指定用户,确保每个用户分到约100篇文章。

方案一:MySQL 8.0+(推荐,语法更简洁)

利用窗口函数ROW_NUMBER()给随机排序的文章编号,再通过编号取模来均匀分配作者ID:

-- 第一步:务必先备份wp_posts表(UPDATE操作不可逆)
CREATE TABLE wp_posts_backup LIKE wp_posts;
INSERT INTO wp_posts_backup SELECT * FROM wp_posts;

-- 第二步:执行分配(假设目标用户ID为2-11,可根据实际ID替换)
UPDATE wp_posts p
JOIN (
    SELECT ID,
           ROW_NUMBER() OVER(ORDER BY RAND()) AS rn
    FROM wp_posts
    WHERE post_author = 1 AND post_type = 'post' -- 仅处理文章类型,需包含页面可去掉该条件
) AS temp ON p.ID = temp.ID
SET p.post_author = 2 + (temp.rn - 1) % 10; -- 2是起始用户ID,10是目标用户总数

方案二:兼容MySQL 5.x版本

通过用户变量计数实现分配:

-- 第一步:备份表
CREATE TABLE wp_posts_backup LIKE wp_posts;
INSERT INTO wp_posts_backup SELECT * FROM wp_posts;

-- 第二步:初始化变量
SET @counter = 0;
SET @start_author_id = 2; -- 第一个目标用户ID
SET @total_authors = 10; -- 目标用户总数

-- 第三步:执行随机分配
UPDATE wp_posts
SET post_author = @start_author_id + MOD(@counter := @counter + 1, @total_authors)
WHERE post_author = 1 AND post_type = 'post'
ORDER BY RAND(); -- 随机排序保证分配均匀

关键提示

  • 替换@start_author_id和@total_authors为你的实际用户ID范围和数量,比如用户ID是5-14,就把@start_author_id设为5,@total_authors设为10。
  • 执行前可先用SELECT验证分配结果:
    SELECT 2 + (ROW_NUMBER() OVER(ORDER BY RAND()) - 1) % 10 AS assigned_author, COUNT(*)
    FROM wp_posts
    WHERE post_author = 1 AND post_type = 'post'
    GROUP BY assigned_author;
    
  • 若需包含页面、自定义文章类型,去掉post_type = 'post'条件即可。

内容的提问来源于stack exchange,提问作者user16529240

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 12:35:37