今天我在下面的代码中遇到过。你什么时候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