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

SQL使用INNER JOIN多表查询出现重复WrestlerID列问题咨询

问题解答

首先明确结论:该问题和主键约束设置没有任何关系。

列重复的根本原因

你在SELECT子句中主动重复声明了三次WrestlerID字段作为输出列:

  • 第一次查询WRESTLER表的WrestlerID
  • 第二次查询SCHOOL表的WrestlerID
  • 第三次重复查询了SCHOOL表的WrestlerID

SQL会严格按照你指定的输出字段返回结果,即使三个字段的取值完全一致,也会生成三列独立的WrestlerID,这是SQL语法的标准执行逻辑,和表的约束规则无关。

额外说明:行重复的排查方向

如果你遇到的是同一个WrestlerID出现了多行重复记录的问题,也和主键约束无关,原因是:
CLUB、SCHOOL表都采用了联合主键,允许同一个WrestlerID对应多条记录(比如一个摔跤手同时加入多个俱乐部、关联多个学校),多表INNER JOIN时会产生交叉扩展:例如一个摔跤手关联2个学校、3个俱乐部,关联后就会返回2*3=6条同WrestlerID的记录。

解决方法

消除重复列

直接删除SELECT子句中多余的WrestlerID字段即可,关联条件已经保证三个表的WrestlerID取值完全一致,仅保留WRESTLER表的WrestlerID就足够,修改后的查询语句如下:

SELECT
    t1.WrestlerID, t1.WrestlerFirst, t1.WrestlerLast,
    t2.School, t3.Club 
FROM
    WRESTLER t1 
INNER JOIN
    SCHOOL t2 ON t1.WrestlerID = t2.WrestlerID 
INNER JOIN
    CLUB t3 ON t1.WrestlerID = t3.WrestlerID;

消除重复行

如果同时存在行重复的问题,可以根据业务需求选择以下方案:

  • 加DISTINCT关键字对结果整体去重
  • 按WrestlerID分组,用聚合函数合并多值字段
  • 调整关联逻辑,增加过滤条件限制返回的关联记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:18:03