2013-10-24 64 views
0

我想比較不同表格中的時間戳。我想要得到tbl_1中的標記比tbl_2中的MAX(標記)大的所有行。比較來自不同表格的兩個時間戳

select * 
from tbl_1 
where timestamp > (select MAX(TIMESTAMP) from tbl_2); 

不幸的是,這是行不通的。我總是得到零結果:/。兩個colums的數據類型是日期/時間


好的我發現了這個問題。

的問題是,如果tbl_2是空的,也沒有日期,它不會返回任何東西。當我輸入一個更小的日期時它可以工作。

+0

你確定你有滿足行那種狀況? – mucio

+0

這對我來說很合適http://www.sqlfiddle.com/#!4/43458/2 –

回答

1

返回NULL在回答筆者的回答這個問題......

你可以使用NVL考慮到子查詢返回NULL的可能性(當tbl_2爲空):

select * 
    from tbl_1 
where timestamp > NVL((select MAX(TIMESTAMP) from tbl_2), timestamp - 1); 
1

我發現做手動比較有幫助。運行查詢

select MAX(TIMESTAMP) from tbl_2 

,看看它的日期是日期比任何日期長大了,你有tbl_1

select MAX(TIMESTAMP) from tbl_1 

如果是的話,解釋爲什麼你沒有得到一個結果,你會必須查看那些大的時間戳以確定記錄是否需要更改。

爲了得到這個工作,甚至返回所有行,當你爲MAX(TIMESTAMP)查詢中tbl_2

select * 
from tbl_1 
where timestamp > (select MAX(TIMESTAMP) from tbl_2) or (select MAX(TIMESTAMP) from tbl_2) is null;