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

不支持LIMIT语法的数据库如何查询拥有最多成就记录的UserID

解决方案

通用标准SQL写法(兼容所有不支持LIMIT的数据库)

核心思路是先统计每个用户的成就总数,再匹配最大值对应的用户,同时支持返回并列第一的所有用户:

SELECT UserID
FROM (
    -- 统计每个用户的成就数量
    SELECT UserID, COUNT(Achievement) AS achievement_count
    FROM Players
    GROUP BY UserID
) AS user_achievement_stats
WHERE achievement_count = (
    -- 取所有用户中最高的成就数量
    SELECT MAX(achievement_count)
    FROM (
        SELECT COUNT(Achievement) AS achievement_count
        FROM Players
        GROUP BY UserID
    ) AS count_stats
)

支持窗口函数的数据库简化写法

如果你的数据库支持窗口函数(MySQL 8.0+、Oracle、SQL Server、PostgreSQL等),可以用RANK()函数实现,逻辑更简洁:

SELECT UserID
FROM (
    SELECT 
        UserID,
        -- 按成就数量倒序排名
        RANK() OVER (ORDER BY COUNT(Achievement) DESC) AS rank_num
    FROM Players
    GROUP BY UserID
) AS rank_result
WHERE rank_num = 1

注:你之前提供的SQL是适配EntitySite表的业务逻辑,和当前Players表的需求不匹配,以上两种写法均直接适配你给出的玩家成就表结构,可直接运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:06:01