OUTER JOIN的结果在WHERE子句中包含匹配和不匹配的行。DB2中OUTER JOINS有两个主要限制。
OUTER JOIN的WHERE子句只能具有'='关系运算符。如果两个或多个表的OUTER JOIN不允许使用<,>等。同样,WHERE子句中的两个或更多条件只能与AND逻辑运算符一起使用,不允许使用其他逻辑运算符,例如OR,NOT。
处理NULL运算符的函数(例如VALUE和COALESCE)不能与OUTER JOINS一起使用。
例如,如果我们有下面2个DB2表,分别存储ORDERS和TRANSACTION详细信息。
ORDER_ID | TRANSACTION_ID | 订购日期 |
Z22345 | ITX4489 | 2020年10月23日 |
Z62998 | ITX4311 | 2020年10月21日 |
Z56902 | ITX3120 | 2020年10月26日 |
TRANSACTION_ID | TRANS_AMT | TRANS_ORDER_DT |
ITX4489 | 1128 | 2020年10月24日 |
ITX4311 | 2318 | 2020年10月17日 |
ITX3120 | 88956 | 2020年10月26日 |
ITX2167 | 5612 | 2020年12月10日 |
这两个表中的OUTER JOIN可以如下进行。
SELECT A.ORDER_ID, B.TRANSACTION_ID, B.TRANS_AMT FROM ORDERS A FULL OUTER JOIN TRANSACTION B ON B.TRANS_ORDER_DT = A.ORDER_DATE
但是,在完全外部联接上比较TRANS_ORDER_DT和ORDER_DATE时,我们不能给出>或<关系运算符。