這想出了在工作,這真的只是看起來像一個謎......爲什麼這個離開連接似乎沒有按預期工作?
查詢1:
SELECT * FROM
SYSIBM.SYSTABLES A LEFT JOIN
SYSIBM.SYSTABLESPACE B
ON A.DBNAME = B.DBNAME
AND A.TSNAME = B.NAME
AND A.TSNAME LIKE 'HIB%'
;
此查詢不上HIB%
標準,相反的是,它看起來像查詢過濾器應該做的。我會認爲把這個標準放在JOIN
中應該會產生相同的結果。
查詢2項按預期工作:
SELECT * FROM
(SELECT * FROM SYSIBM.SYSTABLES
WHERE TSNAME LIKE 'HIB%') A
LEFT JOIN
SYSIBM.SYSTABLESPACE B
ON A.DBNAME = B.DBNAME
AND A.TSNAME = B.NAME
;
什麼是錯的第一個查詢?
因此,如果我正確理解這一點,'LEFT JOIN'將覆蓋我想要在'JOIN'中做的任何一種過濾? – avgvstvs 2012-07-20 18:06:28
第二個表上左連接過濾器的ON子句不是第一個。它將返回第一個表中的所有記錄,除了那些通過WHERE子句過濾的記錄。 – HLGEM 2012-07-20 18:13:22