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

SQL JOIN仅返回首条匹配:查询FIFA球员最高评分及对应最小年龄

方案1:使用窗口函数(适配MySQL 8.0+/PostgreSQL/SQL Server等支持窗口函数的数据库)

SELECT id, name, position, rating, age
FROM (
    SELECT 
        *,
        ROW_NUMBER() OVER (
            PARTITION BY id 
            ORDER BY rating DESC, age ASC
        ) AS rn
    FROM fifa_player_ratings
) t
WHERE rn = 1;

逻辑说明:

  • PARTITION BY id 按球员ID分组,每位球员单独排序
  • ORDER BY rating DESC 组内先按评分降序排列,最高评分排在最前
  • 追加age ASC 保证同评分的行按年龄升序排列,首次达到最高评分的最小年龄行排在最前
  • 最后筛选每组行号为1的记录,即可得到每位球员符合要求的唯一数据

方案2:兼容不支持窗口函数的低版本数据库

SELECT t1.*
FROM fifa_player_ratings t1
INNER JOIN (
    -- 先获取每位球员的最高评分、以及该评分对应的最小年龄
    SELECT 
        id,
        MAX(rating) AS max_rating,
        MIN(age) AS min_age
    FROM fifa_player_ratings
    GROUP BY id
) t2 
ON t1.id = t2.id 
AND t1.rating = t2.max_rating 
AND t1.age = t2.min_age;

以上两种方案运行你提供的示例数据,都可以得到你期望的输出结果,不会出现重复条目。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 03:54:04