在我这样做之后,我的疑问出现了:
select name
from Highschooler
where ID in(select Friend.ID2
from Highschooler left join Friend
on Friend.ID1 = '1911' or Friend.ID1 = '1689');
可以找到表格 here
预期的结果是正确的,并且尊重这个条款: 找出所有与名叫加布里埃尔的人是 friend 的学生的名字。
请注意,我没有对表Highschooler.ID 做任何引用
这对我来说似乎很直观,但后来我开始思考,因为 Highschooler 表在我的工作台中没有选择 ID 作为主键。
那么,当进行左连接时,mysql 如何知道我想将 highschooler 的 ID 与 Friend 的列配对? 这些表没有任何共同的列名。所以据我所知,sql 可以尝试将 Highschooler 的成绩与 Friend 的 ID1 配对。
最佳答案
答案是 MySQL 不知道如何连接表。你必须告诉 MySQL 如何连接表。如果是外部联接,请使用 on
子句。但是,在这种特殊情况下,您不需要外部联接,因为您需要来自 friend 表的 ID。
关于mysql - 左连接的主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41396063/