提供了以下的结构和数据:SQL:加入两个表的/结合,在多个条件
CREATE TABLE "CHANGES" (
"ID" NUMBER(38),
"LAST_UPD_DATE" DATE DEFAULT SYSDATE
);
CREATE TABLE "EXPORT_LOG" (
"ID" NUMBER(38),
"LAST_EXPORT" DATE DEFAULT SYSDATE
);
表CHANGES
包含:
----------------------------
| ID | LAST_UPD_DATE |
----------------------------
| 123 | 12-MAY-16 12.23.23 |
| 124 | 12-MAY-16 12.24.23 |
| 125 | 12-MAY-16 12.11.23 |
----------------------------
和EXPORT_LOG
----------------------------
| ID | LAST_EXPORT |
----------------------------
| 124 | 12-MAY-16 12.23.12 |
| 125 | 12-MAY-16 12.12.24 |
----------------------------
我需要获取CHANGES
中的记录,这些记录不存在于EXPORT_LOG
或者,如果存在,则获得比LAST_EXPORT
晚LAST_UPD_DATE
的记录。 所以在上面的例子中,我应该得到123和124
我尝试不同的连接,但我似乎无法得到我想要的结果: INNER JOIN
用于十字路口,LEFT JOIN
获取所有第一表,但只有那些符合你设定条件的第二张表 - 这些都不是我想要的。那么解决方案是什么联盟?
谢谢,没有工作。但是,你能解释这是怎么回事吗?在'ON t1.ID = t2.ID'的结果之后是不是应用了where子句?因为没有'WHERE',没有记录't2.ID'为'null' – mavili
@mavili - 是的,有。这正是外连接(在这种情况下为左连接)所做的 - 它创建了您正在讨论的记录,其中t1.id没有相应的t2.id。 (请注意,这并不意味着“t2.id为空” - 不确定你的意思。) – mathguy