2014-09-03 57 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