2016-11-04 18 views
1

2つのテーブルから複数の条件を選択するにはSQLクエリが必要です。条件付きの2つのテーブルから選択してください

table1 
order_row | timestamp | 
----------------------- 
0001  |2016-11-04 | 
0002  |2016-11-04 | 
0003  |2016-11-04 | 
0004  |2016-11-03 | 
0006  |2016-11-03 | 

table2 
order_row | timestamp | 
----------------------- 
0001  |2016-11-05 | 
0002  |2016-11-04 | 
0003  |2016-11-04 | 
0004  |2016-11-04 | 
0005  |2016-11-04 | 
0006  |2016-11-02 | 

私はtable2ウィッヒからすべてのorder_row行を取得するようにすべての行を取得したいが、そのタイムスタンプtable1よりtable2で新しいですtable2からtable1order_row行には存在しません。そしてtable 2ウィッヒからcheks行のみがtimestampより新しい2016年11月3日 結果がでなければなりません:

order_row | 
---------- 
0001  | because timestamp is newer in table2 
0004  | because timestamp is newer in table2 
0005  | because it's not present in table1 

答えて

5

これはそれを行う必要があります。

SELECT t2.* 
FROM Table2 AS t2 
LEFT JOIN Table1 AS t1 
    ON t2.order_row = t1.order_row 
WHERE t1.order_row IS NULL OR t2.`timestamp` > t1.`timestamp` 

Demo here

編集:あなたの場合table2より新しいレコードを'2016-11-03'としたい場合は、単に

を追加します
t2.`timestamp` > '2016-11-03' AND (... other conditions here ...) 
+0

迅速な対応に感謝します。私はもう一つ質問があります。どのようにクエリがテーブル2の行をチェックするかを、タイムスタンプが2016-11-03より新しい場合など、条件を追加する方法。 – Kalle

+0

@Kalle述語 't2.timestamp> '2016-11-03'を追加し、より新しいレコード*と*レコードを特定の日付よりも後にする場合は、' t2.timestamp> t1.timestamp'と組み合わせることができます。 –

+0

これですべて動作します。ありがとう。私はより多くの質問を学ぶ必要があります:) – Kalle

関連する問題