我有一张表存储一年内不完整的序列日期:
eg.
Jan 1
Jan 4
Jan 9
Jan 24
Jan 25
Feb 16
Feb 18
Feb 21
Feb 28
Mar 3
.
.
.
Dec 31
我需要在日期列上的表上进行自联接。日期需要在日期中加入,其中日期b是序列中的+ 1天。如果日期已经完成,我会进行连接,例如a.date = b.date,而不是a.date = DATE_ADD(b.date,INTERVAL 1 DAY)
。但我需要这样的a.date = NEXT_DATE_IN_SEQUENCE(b.date)
,但当然这不是一个真正的功能,但我正在寻找这样的东西。
答案 0 :(得分:1)
您可以使用半笛卡尔产品:
SELECT a.date, MIN(b.date)
FROM dates a
INNER JOIN dates b ON b.date > a.date
GROUP BY a.date;
答案 1 :(得分:1)
我会使用相关的子查询来解决这个问题:
select t.*,
(select t2.date
from table t2
where t2.date > t.date
order by t2.date
limit 1
) as next_date
from table t;