我有一个数据库表“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 long。
我需要检索 25 个 USER_NAME
。我想返回过去带有 NEXT_DM_EVENT
的所有 USER_NAME
。如果没有 25 个,则检索 NEXT_CAL_UPDATE_TIME
过去的用户名。
目前我正在用 2 条语句来执行此操作,但我想用一条语句来执行此操作。这可能吗?这是我的 2 条声明。
注意:(当前时间)是一个java长...例如:1403434909872
声明1:
SELECT USER_NAME FROM dmAutoDropAndCal
WHERE NEXT_DM_EVENT
<(当前时间)ORDER BY NEXT_DM_EVENT
ASC
..这里我用前 25 个结果填充一个对象(如果有那么多)。如果不是 25,则运行以下命令...
声明2:
从 dmAutoDropAndCal
中选择 USER_NAME,其中 NEXT_CAL_UPDATE_TIME
<(当前时间)按 NEXT_CAL_UPDATE_TIME
ASC 排序
..再一次,有没有办法用一个语句来做到这一点?
最佳答案
如果您确实指的是任何语句,而不是单个 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;
关于mysql - 更好的MySql语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25650521/