我在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
...
答案 0 :(得分:4)
您需要做的是加入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
表。别名也有助于保持查询简洁。