に、2つのテーブル/組合に参加: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 |
----------------------------
I CHANGES
のレコードを取得する必要があります。そのレコードは、に存在しません、または存在する場合は、より後にLAST_UPD_DATE
のレコードを取得します。 は、したがって、上記の例では、私は別の合流しようとしている123と124
を取得する必要がありますが、私は私が望む結果を得るように見えることはできません。 INNER JOIN
は、交差点のために使用され、LEFT JOIN
は、最初のテーブルのすべてを取得し、あなたが設定した条件に一致する2番目のテーブルのものだけです - これらのどれも私が望むものではありません。だから、ソリューションは何らかの種類のUNIONですか?
仕事をしている、ありがとうございます。しかし、これはどういうものなのか説明できますか? 'ON t1.ID = t2.ID'の結果の後に' where'節が適用されていませんか? 'WHERE'がなければ、' t2.ID'が 'ヌル 'であるレコードはありません – mavili
@mavili - はい、あります。これはまさしく外部結合(この場合は左結合)が行うことです - あなたが話しているレコードを作成します。ここでt1.idには対応するt2.idがありません。 (これは、 "t2.idがヌルである"という意味ではないことに注意してください)。 – mathguy