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

MS Access中玩家自关联匹配表的关系设置与SQL查询问题

关系设置确认与方法

你的操作是正确的,具体步骤如下:

  • 打开Access的关系窗口,先添加一次PLAYER表,再次添加该表时,Access会自动将第二个表命名为PLAYER_1
  • 将MATCH表的player_name_id字段拖到第一个PLAYER表的player_id字段,创建一对多关系
  • 将MATCH表的opponent_name_id字段拖到第二个PLAYER表的player_id字段,同样创建一对多关系
  • 勾选实施参照完整性,避免外键引用不存在的玩家ID
正确的SQL查询语句

通过给PLAYER表设置两个别名,分别关联对战双方的ID,并添加过滤条件排除自对战数据:

SELECT 
    M.match_id,
    P1.player_name AS 玩家名称,
    P2.player_name AS 对手名称
FROM 
    MATCH AS M
INNER JOIN PLAYER AS P1 ON M.player_name_id = P1.player_id
INNER JOIN PLAYER AS P2 ON M.opponent_name_id = P2.player_id
WHERE 
    P1.player_id <> P2.player_id;
  • 用AS给表设置别名P1(玩家)、P2(对手),区分两次关联的同一张表
  • WHERE子句P1.player_id <> P2.player_id直接过滤掉玩家对战自己的无效记录
  • 若需要保留所有比赛记录(包括无效记录),可将INNER JOIN替换为LEFT JOIN,但推荐用INNER JOIN保证数据有效性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 21:22:01