基于双外键列关联表的SQL查询结果不符求助
问题解决:关联双外键到同表的SQL查询修正
数据表结构与数据
TablePC表
| no | name | party19 | party24 |
|---|---|---|---|
| 1 | A | 1 | 1 |
| 2 | B | 1 | 2 |
party19和party24为关联TableParty.no的外键
TableParty表
| no | name |
|---|---|
| 1 | X |
| 2 | Y |
原查询的问题
你当前的SQL只对TableParty做了一次关联,并且设置了TableParty.no同时等于party19和party24的条件:
select TablePC.name ,TableParty.name as A ,TableParty.name as B from TablePC join TableParty on TableParty.no = TablePC.party19 and TableParty.no=TablePC.party24;
这个条件仅当party19与party24值完全相同时才会匹配(比如第一条数据A),而第二条数据B的两个外键值不同,因此无法被查询到,导致结果不符合预期。
正确的查询语句
要分别获取两个外键对应的TableParty名称,需要两次关联TableParty表,并为每次关联指定不同的别名,避免冲突:
select TablePC.name , tp1.name as A , tp2.name as B from TablePC join TableParty tp1 on tp1.no = TablePC.party19 join TableParty tp2 on tp2.no = TablePC.party24;
预期结果验证
执行上述SQL后,将得到你想要的结果:
| name | A | B |
|---|---|---|
| A | X | X |
| B | X | Y |
内容的提问来源于stack exchange,提问作者W R
相关产品推荐
相关产品推荐

