I need a SQL query, for multiple condition select from 2 tables.
x
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 |
I want to get all rows so that I get all order_row
rows from table2
which are not present in table1
and order_row
rows from table2
whose timestamp is newer in table2
than table1
. And checks only rows from table 2
where timestamp
is newer than 2016-11-03.
Result must be:
order_row |
----------
0001 | because timestamp is newer in table2
0004 | because timestamp is newer in table2
0005 | because it's not present in table1
Advertisement
Answer
This should do it:
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`
Edit: If you want only records from table2
newer than '2016-11-03'
to be considered, then simply add:
t2.`timestamp` > '2016-11-03' AND ( other conditions here )