这可能是以前讨论过的(或者它太简单了),但我找不到一个简单的答案:应该如何做:选择(单个)最早的未来日期和每个ID的最近日期?SQL:自动从表SELECT中JOIN顶部1? (或更好的方法...)
t1: ==?==> (earliest) (most recent)
|id|date(DESC)| |id|future_date | past_date |
+==+==========+ +==+=============+===============+
|1 | d1 | | 1| d1 | d3 |
|2 | d2 | | 2| d2 | d6 |
(<==now) | 3| | d4 |
|1 | d3 |
|3 | d4 |
|1 | d5 |
|2 | d6 |
我正沿着以下的思路思考,但是我有一种感觉,这是相当复杂/语法错误,而我还没有想出如何限制单的结果(即最新的/最近在未来)。有什么建议么?
SELECT t_1.id,t_1.date AS future_date,t_2.date AS past_date
FROM (SELECT * FROM t1 WHERE t1.date>CURRENT_TIMESTAMP) t_1
LEFT OUTER JOIN
(SELECT TOP 1 * FROM t1 WHERE t1.date<CURRENT_TIMESTAMP) t_2
ON t_1.id=t_2.id
这是哪一个数据库? – 2011-01-20 07:22:43
如果修改它显示CURRENT_TIMESTAMP ...(它有点伪代码...) – ajo 2011-01-20 07:36:06