我有兩個表:反向JOIN的效果
- 人名單;
- 我想忽略的人員列表。
當我閱讀人員列表時,我不想看到列表中被忽略的人。
我目前的解決方案是第二次查詢數據庫(選擇我想忽略的人),並從我用PHP創建的數組中刪除它們。它工作,沒關係。
但是,我想在MySQL中這樣做。我知道JOIN
只會在該行存在於另一個表中時纔會連接。我正在尋找不同的東西(如果行存在,將不會顯示條目)。
我在谷歌搜索,但缺乏「關鍵字」這給了我沒有結果。
感謝
我有兩個表:反向JOIN的效果
當我閱讀人員列表時,我不想看到列表中被忽略的人。
我目前的解決方案是第二次查詢數據庫(選擇我想忽略的人),並從我用PHP創建的數組中刪除它們。它工作,沒關係。
但是,我想在MySQL中這樣做。我知道JOIN
只會在該行存在於另一個表中時纔會連接。我正在尋找不同的東西(如果行存在,將不會顯示條目)。
我在谷歌搜索,但缺乏「關鍵字」這給了我沒有結果。
感謝
SELECT * FROM Person
LEFT OUTER JOIN IgnoredPerson
ON Person.id = IgnoredPerson.id
WHERE IgnoredPerson.id IS null
說明:
通過where子句排除我們不從右側所需的記錄
http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html
是否需要'OUTER'部分?這不僅僅是一個'LEFT JOIN'嗎? –
@RocketHazmat [''LEFT OUTER JOIN === LEFT JOIN'](http://stackoverflow.com/questions/2809594/basic-question-left-outer-join-vs-left-join),但我喜歡明確。 –
謝謝你。您的解決方案完美運作 –
不知道您的架構,我建議沿着這些路線的東西:
SELECT * FROM people WHERE id NOT IN (SELECT person_id FROM ignored_people)
你可以嘗試這樣的
SELECT * FROM people p WHERE NOT EXISTS (SELECT i.id FROM ignorePeople i where p.id = i.id)
here's鏈接一些關於在MySQL
EXISTS
這是你的數據庫結構?如果沒有任何源代碼,我們不能幫你 –