我在mysql中有以下查询:

select first_name, idStudent2
from `Student` join `Friend`
on `Student`.`idStudent` = `Friend`.`idStudent1`;

它给出了结果
Camille   1
Emily     5
Bob       6
Bob       7
...

结果是显示学生姓名,然后显示该学生朋友的学生ID。
名为Student的表是(学校)数据库中所有学生的表。Friend是学生的一元多对多关系。
与在第二列显示学生id的结果不同,我希望它显示与该id对应的学生名。
idStudent1idStudent2是指向Student表主键的外键。所以基本上,我想要一种方法来访问外键idStudent2指向的表行中的信息。
期望的结果如下:
Camille    Trevor
Emily      Bob
Bob        James
Bob        Katrina
...

最佳答案

您需要做的是加入Student表两次。一次用于Friend.idStudent1和一次用于Friend.idStudent2

select s1.first_name, s2.first_name
from Friend   f
join Student s1 on s1.idStudent = f.idStudent1
join Student s2 on s2.idStudent = f.idStudent2;

当您将同一个表连接两次时,需要使用别名来区分它们。这里我使用s1s2表示Student表,使用f表示Friend表。别名还有助于保持查询的简短和整洁。

关于mysql - 访问外键指向的表中的数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33745627/

10-13 06:54