访问外键

时间:2015-11-16 22:14:56

标签: mysql sql database

我在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
...

1 个答案:

答案 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;

当你两次加入同一个表时,你需要使用别名来区分它们。在这里,我已将s1s2用于Student表,将f用于Friend表。别名也有助于保持查询简洁。