2013-04-17 75 views
0

我想只顯示來自SQL查詢的最近的DateTime數據,但數據跨越兩個表。我有代碼SocialDatabase.SocialStart > NOW() LIMIT 1從一個表中選擇最新的數據,我知道TrainingDatabase.SocialStart > NOW() LIMIT 1會爲另一個表做同樣的事情。SQL查詢,從不同表中的兩列中選擇最近的DateTime數據

那麼我將如何去融合這些在一起,只能從SocialDatabase和TrainingDatabase表的組合列表查詢離您最近的數據

感謝

+0

請提供您的數據庫架構。 –

+0

除了你的模式,樣本數據和預期的結果會很好。 – sgeddes

回答

0

您可以使用UNION語法:

(select SocialStart, Data from SocialDatabase where SocialDatabase.SocialStart > now() limit 1) 
union 
(select SocialStart, Data from TrainingDatabase where TrainingDatabase.SocialStart > now() limit 1) 
order by 1 desc limit 1 
+0

我剛剛解決了這個問題,我即將發佈自己的答案。但是,無論如何,我會讓你擁有它 – user2291530

0

你可以創建一個view - 它在內存中的虛擬表,並運行一個選擇。

例如:

create view tmp as select id, timestamp from SocialDatabase.SocialStart order by timestamp asc limit 1; 
insert into tmp select id, timestamp from TrainingDatabase.SocialStart order by timestamp asc limit 1; 
select id,timestamp from tmp where timestamp>now() order by timestamp asc limit 1; 

..或者你可以做到這一點更簡單 - 兩個選擇,一個比較Java代碼。

相關問題