2016-11-04 2 views
1

SQL 쿼리가 필요합니다. 여러 조건에서 2 개의 테이블을 선택하십시오.조건이있는 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 행에 존재하지 않습니다. 그리고 cheks는 table 2 느릅 나무의 행은 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

편집 : 당신이 만약 고려해야 할 '2016-11-03'보다 최신 table2의 레코드 만 원한다면 다음을 추가하십시오 :

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

관련 문제