簡體   English   中英

第一個表的所有行與第二個表連接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM