更好的MySql语句

时间:2014-09-03 17:41:30

标签: mysql

我有一个数据库表" dmAutoDropAndCal"使用以下列:

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。我想在过去使用USER_NAME返回所有NEXT_DM_EVENT个。如果没有25,则检索过去NEXT_CAL_UPDATE_TIME的用户名。

目前我正在使用2个语句执行此操作,但我想用一个语句来执行此操作。这可能吗?这是我的两个陈述。

注意:(当前时间)是一个java长...例如:1403434909872

声明1: SELECT USER_NAME FROM dmAutoDropAndCal 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

..再一次,是否有办法用一个陈述来做到这一点?

1 个答案:

答案 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;