2013-04-13 37 views
1

我想留下使用這樣的查詢使用IS NULL進行左連接在DB2中不起作用?

SELECT * FROM table1 a, table2 b WHERE (a.ID = b.ID OR b.ID IS NULL) 

在Oracle加入到表,這是相當於LEFT JOIN(和其他的數據庫以及,據我所知)。

在DB2(z/OS)中執行相同的操作會生成內部聯接 - b.ID IS NULL子句對結果沒有影響,刪除它不會改變任何內容。

有沒有辦法在DB2中完成這項工作?這是否應該根據ANSI SQL工作?我知道我可以使用JOIN的語法,我只是感興趣,爲什麼這不起作用,如果有辦法解決這個問題。

+0

您的查詢不等同於'LEFT JOIN'。使用Oracle,您可以使用'(+)'代替'LEFT JOIN',如下所示:'SELECT * FROM table1 a,table2 b where a.ID = b.ID(+)' – lunr

+0

您的聲明是*** NOT ** *相當於Oracle中的「LEFT JOIN」。 –

回答

2

您可以使用

SELECT a.*, b.* 
    FROM tbl1 a LEFT JOIN tbl2 b ON a.id=b.id;