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

如何在SQL Server中获取赛程表的唯一对阵记录?

在SQL Server中提取唯一赛事对阵记录

原始数据

假设你的赛程表表名为Schedule,数据如下:

Team1Team2
CSKSRH
SRHCSK
MIRR
RRMI
DCMI

需求目标

获取不区分主客场的唯一对阵记录(即A vs B与B vs A视为同一对阵),结果如下:

Team1Team2
CSKSRH
RRMI
DCMI

解决方案

方法1:统一对阵顺序+去重(简洁版)

通过字符串比较固定对阵双方的排列顺序,再用DISTINCT去重,直接得到唯一对阵:

SELECT DISTINCT
    CASE WHEN Team1 < Team2 THEN Team1 ELSE Team2 END AS Team1,
    CASE WHEN Team1 < Team2 THEN Team2 ELSE Team1 END AS Team2
FROM Schedule;

方法2:窗口函数保留原始对阵顺序

如果需要保留原始数据中某一方作为Team1的记录(比如优先保留首次出现的对阵顺序),可以用ROW_NUMBER()分组筛选:

WITH RankedMatches AS (
    SELECT
        Team1,
        Team2,
        ROW_NUMBER() OVER (
            PARTITION BY 
                CASE WHEN Team1 < Team2 THEN Team1 ELSE Team2 END,
                CASE WHEN Team1 < Team2 THEN Team2 ELSE Team1 END
            ORDER BY Team1 -- 可根据需求调整排序规则,比如比赛时间
        ) AS RowNum
    FROM Schedule
)
SELECT Team1, Team2
FROM RankedMatches
WHERE RowNum = 1;

大小写兼容处理

如果队名存在大小写差异(如CSK和csk),需统一大小写后再比较,避免误判为不同对阵:

SELECT DISTINCT
    CASE WHEN LOWER(Team1) < LOWER(Team2) THEN Team1 ELSE Team2 END AS Team1,
    CASE WHEN LOWER(Team1) < LOWER(Team2) THEN Team2 ELSE Team1 END AS Team2
FROM Schedule;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 17:10:25