これは仕事で出てきました、そしてこれは本当にパズルのようです...
クエリ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
;
最初のクエリの何が問題になっていますか?