[英]all rows from the first table joined with the second table
我有這張表exam
ID | Name | Date
_____________________
1 | E1 | 2017-1-1
1 | E2 | 2017-1-2
1 | E3 | 2017-1-3
這張桌子enroll
ID | U_ID | E_ID | Status
_________________________
1 | 1 | 1 | 0
1 | 1 | 2 | 1
1 | 2 | 1 | 1
我想要的結果是
Name | U_ID | Date | Status
_______________________________
E1 | 1 | 2017-1-1 | 0
E2 | 1 | 2017-1-2 | 1
E3 | 1 | 2017-1-3 | NULL
我嘗試了這個:
SELECT Name , U_ID , Date , Status
FROM exam LEFT JOIN enroll ON exam.ID = enroll.E_ID
WHERE U_ID = 1
我得到的結果
Name | U_ID | Date | Status
_______________________________
E1 | 1 | 2017-1-1 | 0
E2 | 1 | 2017-1-2 | 1
還嘗試了這個:
SELECT Name , U_ID , Date , Status
FROM exam LEFT OUTER JOIN enroll ON exam.ID = enroll.E_ID
WHERE U_ID = 1
但結果相同。
怎么了 ? 我怎樣才能得到理想的結果?
將濾鏡移至ON
狀態
SELECT Name , U_ID , Date , Status
FROM exam e
LEFT JOIN enroll en
ON e.ID = en.E_ID
AND en.U_ID = 1
當使用filter where子句時,對於不匹配的記錄, U_ID
將為NULL
因此將對結果進行過濾。 當您在“ ON
狀態下使用文件管理器時,它會說要聯接的記錄是什么,而不是過濾的記錄。
將WHERE
條件移到ON
以獲得真正的left join
結果(而不是inner join
結果。)
SELECT Name , U_ID , Date , Status
FROM exam LEFT JOIN enroll ON exam.ID = enroll.E_ID
AND U_ID = 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.