假设我有一个日记表。日记中的每个条目都有一个user_id
和一个entry_date
。 对于user_id
的范围,我想选择晚于指定日期的第一个条目。对于所有行,选择满足条件的第一个条目
因此,与
user_id | entry_date
--------------------
1 | 2016-11-09 20:00:00
2 | 2016-11-09 20:00:00
1 | 2016-11-09 21:00:00
1 | 2016-11-09 22:00:00
5 | 2016-11-10 20:00:00
我想我可以写类似
SELECT user_id,entry_date FROM entries
WHERE entries.user_id BETWEEN 10 AND 20
AND TAKE_FIRST(entries.entry_date >= to_timestamp('2016-11-09 20:30:00', 'yyyy-mm-dd hh24:mi:ss'))
(其中TAKE_FIRST()
是什么我不知道的占位符。)
这样的结果将是
user_id | entry_date
--------------------
1 | 2016-11-09 21:00:00
5 | 2016-11-10 20:00:00
我该如何做到这一点?
我想有一个性能问题,所有时间戳大于指定的日期将被选中,并从那里只选择1。表现能够得到改善吗? – kasperhj