我有一些信息,其中IdNumbers(不是主鍵ID,只是隨機ID分配給個人)並不總是正確的在我的第一個表。加入((=陳述)或((!=陳述),其他規定))
因此,我正在加入我的第二個表和ID,並試圖讓它到達名稱的位置,只有當IdNumbers不匹配時。
我正在使用大致如下的連接語句處理查詢(我忽略了SELECT,WHERE和ORDER BY節,因爲我相信它們對此問題沒有影響,而我不要混淆,因爲它們很愚蠢複雜 - 如果下面的查詢部分應該像我想要的那樣工作,並且問題顯然是在其他地方,那麼請告訴我,那樣會回答我的問題):
FROM Table1
FULL OUTER JOIN Table2 ON ((Table1.IdNumber = Table2.IdNumber)
OR (Table1.IdNumber != Table2.IdNumber
AND Table1.Lname = Table2.Lname
AND Table1.Fname = Table2.Fname))
但是,多次參加誰擁有兩個匹配ID的人相匹配的名字,像這樣:
Fname M Lname Table1.IdNumber Table2.IdNumber2
Matthew - Smith 1 2
Matthew H Smith 2 1
Matthew - Smith 1 1
Matthew H Smith 2 2
因此,它是拉最後2個,因爲他們的ID匹配,但也加入了前兩個,因爲他們的ID不匹配,他們的名字相匹配,但爲什麼它加入前2?我懷疑它在決定何處加入時忽略了!=語句,因爲其他條件已滿足,但我希望它以某種方式考慮這個!=語句。
如果這應該工作,就像我之前說過的,告訴我,它會回答我的問題。
(*編輯) 對不起,我應該正確命名這些 - 我修改了名稱。而完整的外部連接是必要的,我需要從這兩個表中的一切,不管它是什麼,它的工作正常,但謝謝你的建議。
請出示哪些列屬於哪個表。順便說一句:你確定你想要一個完整的外部連接而不是一個內部連接? –
在你的例子中,這些全部看起來都是獨特的記錄。你能給我們提供一個小提琴嗎? – Woot4Moo
它考慮了'!=' - 在結果的第一行,'1!= 2'。你需要某種類型的'NOT EXISTS'作爲ID的匹配行,但不幸的是這將比你當前的'JOIN'複雜得多。 – cjk