今天我在下面的代碼中遇到過。你什麼時候INNER JOIN LEFT JOINed表/
SELECT StaffGroup.*
FROM StaffGroup
LEFT OUTER JOIN StaffByGroup
ON StaffByGroup.StaffGroupId = StaffGroup.StaffGroupId
INNER JOIN StaffMember
ON StaffMember.StaffMemberId = StaffByGroup.StaffMemberId
WHERE StaffByGroup.StaffGroupId IS NULL
主表StaffGroup
被遺忘加入了與StaffByGroup
表,然後StaffByGroup
表正被INNER加入了與StaffMember
表。
我認爲INNER JOIN試圖過濾出StaffGroup
和StaffByGroup
中存在的記錄,但StaffMember
中不存在。
但這不是它是如何工作的。該查詢不返回任何記錄。
我在理解查詢邏輯時錯過了一些東西嗎?你有沒有使用INNER JOIN和在查詢的早期部分使用過LEFT JOIN的表?
如果刪除where子句,它是否返回記錄? – Szymon
是的。如果我刪除WHERE子句,它將返回所有三個表中存在的記錄。 – jags