基本上,我想要的是,如果在'X'類型的tableB中有一條記錄,我希望看到它,否則我不需要,但我希望tableA中的所有記錄。如何從tableA中獲取tableB中左外連接和whereB條件的所有記錄?
我知道我可以通過將tableB.type ='X'放在LEFT OUTER JOIN ON子句中來實現這一點,但是我不能這樣做,因爲我僅限於使用where條件,因爲我是使用一個程序的受限查詢管理器我不會命名,但我絕對討厭。 :)
SELECT *
FROM tableA
LEFT OUTER JOIN ON tableA.ID = tableB.ID
WHERE tableB.type = 'X'
我該如何做到這一點?
編輯
我試過,但我仍然沒有從表A獲得的所有記錄。我正在SQL服務器上測試這一點,以避免等待很長時間才能使我的查詢在生產系統上運行。如果有幫助,我很確定生產系統正在使用Oracle。
SELECT *
FROM tableA LEFT OUTER JOIN ON tableA.ID = tableB.ID
WHERE tableB.type = 'X' OR tableB.type IS NULL
+1用於說明類型可能是一個NULL值 – RedFilter 2009-09-28 16:53:29
在這些情況下的情況下,我總是試圖比較主鍵「 IS NULL「 - 這是此答案中的第二個SQL代碼片段。 – 2009-09-28 16:58:18
這在SQL Server中不起作用。 where子句引用tableb將內部連接更改爲內部連接。當我添加where子句時,它只給我提供了我在查看的字段中有空的記錄。如果我把它放在ID字段上,我仍然得到了錯誤的答案 – HLGEM 2009-09-28 17:30:41