我有一个数据库表" dmAutoDropAndCal"使用以下列:
USER_NAME varchar
LAST_AUTO_DROP_CHECK bigint
NEXT_DM_EVENT bigint
NEXT_CAL_UPDATE_TIME bigint
NEXT_DM_EVENT
,LAST_AUTO_DROP_CHECK
和NEXT_CAL_UPDATE_TIME
都是表示时间戳的java长度,以毫秒为单位。
我需要检索25 USER_NAME
s。我想在过去使用USER_NAME
返回所有NEXT_DM_EVENT
个。如果没有25,则检索过去NEXT_CAL_UPDATE_TIME
的用户名。
目前我正在使用2个语句执行此操作,但我想用一个语句来执行此操作。这可能吗?这是我的两个陈述。
注意:(当前时间)是一个java长...例如:1403434909872
声明1: SELECT USER_NAME FROMdmAutoDropAndCal
WHERE NEXT_DM_EVENT
< (当前时间)ORDER BY NEXT_DM_EVENT
ASC
..这里我用前25个结果填充一个对象(如果有那么多)。如果不是25,那么运行以下...
声明2:
SELECT USER_NAME FROM dmAutoDropAndCal
WHERE NEXT_CAL_UPDATE_TIME
< (当前时间)ORDER BY NEXT_CAL_UPDATE_TIME
ASC
..再一次,是否有办法用一个陈述来做到这一点?
答案 0 :(得分: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;