像这样:
表学生:
sID |姓名
1 -----苏珊
2 -----摩根
3 -----伊恩
4 -----詹姆斯
主键=sID
另一个表是这样的:
同 table friend
好友ID |人A |人B
1------------1------------3
2------------1------------2
3------------2------------3
4------------3------------4
其中主键是:friendsID, personA, personB
Foreign Key = personA, personB 都引用了 students 表中的 sID
我想要一种查询 friend 表的方式,通过 sID 将 personA 和 personB 列替换为名称。我试过自然连接,但它只有在有一个外键时才有效。
即我正在寻找这样的东西:
好友ID |人A |人B
1------------苏珊------------伊恩
2------------苏珊------------摩根
3------------摩根------------伊恩
4------------伊恩------------詹姆斯
如果我只有 personB 作为列而没有 personB,自然连接就可以工作。出于某种原因,当我这样做时,自然连接是巨大的: select*from friends NATURAL JOIN 学生;
请帮忙。谢谢
最佳答案
您需要使用两个连接来完成此操作。
例如:
select f.friendsID,
s1.name as personA_name,
s2.name as personB_name
from friends f
inner join student s1 on s1.sID = f.personA
inner join student s2 on s2.sID = f.personB
关于mysql - 2个外键在MySQL中引用同一个主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26618381/