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

PostgreSQL中通过JOIN关联表获取UFC赛事选手姓名的SQL查询方案

嘿,作为SQL新手遇到这种关联查询很正常,别慌!你需要做的就是多次关联fighters表,分别为赛事里的三位选手匹配对应的姓名。我给你整理了完整的查询语句,还会一步步解释,保证你能看懂~

完整SQL查询语句
SELECT
    -- 如果你不需要展示原始ID,可以把下面三行删掉
    m.fighter_a,
    m.fighter_b,
    m.winner,
    -- 新增的姓名字段
    fa.name AS fighter_a_name,
    fb.name AS fighter_b_name,
    w.name AS winner_name
FROM
    matches m
-- 关联fighter_a对应的选手信息
JOIN
    fighters fa ON m.fighter_a = fa.id
-- 关联fighter_b对应的选手信息
JOIN
    fighters fb ON m.fighter_b = fb.id
-- 关联winner对应的选手信息(用LEFT JOIN避免过滤掉无胜者的赛事)
LEFT JOIN
    fighters w ON m.winner = w.id;
关键细节解释
  • 表别名:给matches起别名m,给fighters分别起fa(对应fighter_a)、fb(对应fighter_b)、w(对应winner)的别名,这样写起来更简洁,也不会因为多次关联同一张表导致字段冲突。
  • LEFT JOIN的作用:我这里用LEFT JOIN关联胜者的信息,是因为有些赛事可能存在无明确胜者的情况(比如平局、赛事取消),这时候winner字段可能为NULL。用LEFT JOIN可以保证这类记录依然会被查询出来,而不会被过滤掉。如果你的赛事都有明确的胜者,也可以换成普通的JOIN。
  • 字段别名:用AS fighter_a_name给查询出来的姓名字段起别名,这样你在网页展示的时候,能直接识别出哪个是选手A的名字,哪个是选手B的,不用再对应ID去查。
小提示

如果你的fighters表中存储姓名的字段不是name(比如是full_name或者nickname),记得把语句里的fa.name、fb.name、w.name换成实际的字段名哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 18:07:43