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

MySQL技术需求:获取提交条目最多的所有用户

解决MySQL查询提交条目最多用户的问题

没问题,我来帮你搞定这个需求!你需要的是找出所有条目数最多的用户,而不是只展示每个用户的总数,这里有几种靠谱的实现方法:

方法一:子查询嵌套(兼容所有MySQL版本)

这种方法适配所有版本的MySQL,逻辑是先计算每个用户的条目数,再找出其中的最大值,最后筛选出条目数等于这个最大值的用户:

-- 仅展示user_id和对应条目数
SELECT user_id, COUNT(*) AS item_count
FROM items
GROUP BY user_id
HAVING COUNT(*) = (
    -- 先统计所有用户的条目数,再取最大值
    SELECT MAX(item_count)
    FROM (
        SELECT COUNT(*) AS item_count
        FROM items
        GROUP BY user_id
    ) AS user_counts
);

-- 显示成你预期的「User-xxx」格式
SELECT CONCAT('User-', user_id) AS user_name, COUNT(*) AS item_count
FROM items
GROUP BY user_id
HAVING COUNT(*) = (
    SELECT MAX(item_count)
    FROM (
        SELECT COUNT(*) AS item_count
        FROM items
        GROUP BY user_id
    ) AS user_counts
);

方法二:窗口函数(MySQL 8.0及以上版本)

如果你的MySQL是8.0或更新版本,用窗口函数会更简洁高效,推荐用RANK()函数实现:

SELECT CONCAT('User-', user_id) AS user_name
FROM (
    -- 按条目数降序给用户排名,条目数相同的用户排名一致
    SELECT user_id,
           RANK() OVER (ORDER BY COUNT(*) DESC) AS user_rank
    FROM items
    GROUP BY user_id
) AS ranked_users
WHERE user_rank = 1;

这个方法可读性更强,不需要嵌套多层子查询,性能表现也更优。

额外补充:关联用户表显示真实用户名

如果你的user_id关联了专门的用户表(比如users表存储用户真实名称),可以通过关联查询直接展示真实用户名:

SELECT u.username, top_users.item_count
FROM users u
JOIN (
    SELECT user_id, COUNT(*) AS item_count
    FROM items
    GROUP BY user_id
    HAVING COUNT(*) = (
        SELECT MAX(item_count)
        FROM (SELECT COUNT(*) AS item_count FROM items GROUP BY user_id) AS uc
    )
) AS top_users ON u.id = top_users.user_id;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:31:05