左连接的主键

时间:2016-12-30 12:11:30

标签: mysql database

我这样做后,我的怀疑加剧了:

select name
from Highschooler
where ID in(select Friend.ID2
            from Highschooler left join Friend
            on Friend.ID1 = '1911' or Friend.ID1 = '1689');

可以找到表格here

预期结果是正确的,并尊重此条款: 找到与名为Gabriel的人成为朋友的所有学生的姓名。

请注意,我没有对表格进行任何引用 Highschooler.ID

这对我来说似乎很直观,但后来它让我觉得Highschooler表没有在我的工作台中选择ID作为主键。

那么,在进行左连接时,mysql如何知道我想将来自highschooler的ID与来自Friend的列配对? 这些表没有任何共同的列名。所以我知道sql可以尝试将来自Highschooler的成绩与来自Friend的ID1配对。

1 个答案:

答案 0 :(得分:0)

答案是MySQL不知道如何连接表。你必须告诉MySQL如何加入表。如果是外连接,请使用on子句。但是,在这种特殊情况下,您不需要外连接,因为您需要友元表中的ID。