2016-12-30 69 views
1

我的疑問引起了我這樣做後:主鍵左加入

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

該表可以發現here

預期的結果是正確的,並尊重這一條款: 查找名稱所有與加百列某人有朋友的學生。

請注意,我沒有做任何參考表Highschooler.ID

這似乎直觀的給我,但隨後它讓我爲Highschooler表沒有ID選擇在我的工作臺主鍵思維。

因此,當進行左連接時,mysql如何知道我想將來自highschooler的ID與Friend的列進行配對? 表格沒有任何共同的列名稱。因此,盡我所知,sql可以嘗試將來自Highschooler的成績與朋友的ID1配對。

+0

你想達到什麼目的?並且您的左連接在兩個表之間沒有連接條件。 – Viki888

+0

@ Viki888對不起,我添加了更多信息。 – Souza

回答

0

答案是MySQL不知道如何連接表。你必須告訴MySQL如何加入表格。如果是外連接,請使用on子句。但是,在這種特殊情況下,您不需要外連接,因爲您需要朋友表中的id。

+0

但爲什麼mysql決定使用Highschooler.ID與Friend配對? 我從來沒有參考ID – Souza

+0

MySQL在沒有實際連接條件的情況下創建笛卡爾連接。 – Shadow