我在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对应的学生名。
idStudent1
和idStudent2
是指向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;
当您将同一个表连接两次时,需要使用别名来区分它们。这里我使用
s1
和s2
表示Student
表,使用f
表示Friend
表。别名还有助于保持查询的简短和整洁。关于mysql - 访问外键指向的表中的数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33745627/