提供了以下的結構和數據: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