这想出了在工作,这真的只是看起来像一个谜......为什么这个离开连接似乎没有按预期工作?
查询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