2014-09-03 83 views
0

我有一個數據庫表 「dmAutoDropAndCal」 有以下的列:
更好的MySQL聲明

USER_NAME    varchar 
LAST_AUTO_DROP_CHECK bigint 
NEXT_DM_EVENT   bigint 
NEXT_CAL_UPDATE_TIME bigint 

NEXT_DM_EVENTLAST_AUTO_DROP_CHECKNEXT_CAL_UPDATE_TIME是代表以毫秒爲單位的時間戳所有的Java多頭。我需要檢索25 USER_NAME s。我想過去用NEXT_DM_EVENT返回所有USER_NAME。如果沒有,則檢索用戶名,其中NEXT_CAL_UPDATE_TIME過去。

目前我正在做這2個語句,但我想用一個語句來做到這一點。這可能嗎?這是我的兩個陳述。

注:(當前時間)是Java長...例如:1403434909872

聲明1: SELECT USER_NAME FROM dmAutoDropAndCal WHERE NEXT_DM_EVENT <(當前時間)ORDER BY NEXT_DM_EVENT ASC

..here我用前25個結果填充一個對象(如果有的話)。如果不是25,然後運行以下...

聲明2:

SELECT USER_NAME FROM dmAutoDropAndCal WHERE NEXT_CAL_UPDATE_TIME <(當前時間)ORDER BY NEXT_CAL_UPDATE_TIME ASC

再次..once,是有辦法用一個陳述來做到這一點?

+1

這是一個純粹的SQL問題,所以你最好是去消除所有的Java和只關注SQL。首先在mysql命令行(或IDE)會話中工作,然後擔心Java。 – 2014-09-03 19:29:03

回答

1

如果你真正的意思的任何聲明,而不是單一SELECT聲明,我認爲你是後UNION

(SELECT USER_NAME FROM dmAutoDropAndCal 
WHERE NEXT_DM_EVENT < (current time) ORDER BY NEXT_DM_EVENT ASC) 
UNION 
(SELECT USER_NAME FROM dmAutoDropAndCal 
WHERE NEXT_CAL_UPDATE_TIME < (current time) ORDER BY NEXT_CAL_UPDATE_TIME ASC) 
LIMIT 25; 
+0

謝謝你...我會研究這個並回來。 – rob345 2014-09-06 20:11:53