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

MySQL如何筛选仅含单一热门选手的赛事获胜记录?

实现单一热门选手夺冠记录的筛选

可以实现,核心思路是先统计每场赛事中ranking=1的选手数量,再筛选出仅1名热门选手且该选手夺冠的记录。以下是两种可行的SQL写法:

方法1:子查询分组统计

适合不支持窗口函数的数据库:

SELECT r.*
FROM results r
WHERE r.position = 1 
  AND r.ranking = 1 
  AND r.no_of_runners = 6
  AND (
    -- 统计当前记录所属赛事中ranking=1的选手数量
    SELECT COUNT(*) 
    FROM results r2 
    -- 需用赛事唯一标识关联,比如event_id(若表中无此字段,需先添加)
    WHERE r2.event_id = r.event_id 
      AND r2.ranking = 1
  ) = 1;

方法2:窗口函数统计(更高效)

支持窗口函数的数据库(如MySQL 8+、PostgreSQL、SQL Server等)推荐使用:

SELECT position, ranking, odds, no_of_runners
FROM (
    SELECT 
        *,
        -- 按赛事分组,统计该赛事中ranking=1的选手数量
        COUNT(CASE WHEN ranking = 1 THEN 1 END) OVER (PARTITION BY event_id) AS num_favourites
    FROM results
) AS sub_query
WHERE position = 1 
  AND ranking = 1 
  AND no_of_runners = 6
  AND num_favourites = 1;

关键说明

如果你的数据表中没有赛事唯一标识字段(如event_id),需要先添加该字段,否则无法准确区分不同赛事的记录(不同赛事可能有相同的参赛人数)。添加后使用上述语句即可精准筛选出符合要求的记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 14:28:31