在不完整的日期序列上的连接上添加+1天到下一个日期

时间:2014-12-21 02:51:01

标签: mysql sql

我有一张表存储一年内不完整的序列日期:

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),但当然这不是一个真正的功能,但我正在寻找这样的东西。

2 个答案:

答案 0 :(得分:1)

您可以使用半笛卡尔产品:

SELECT a.date, MIN(b.date)
FROM dates a
INNER JOIN dates b ON b.date > a.date
GROUP BY a.date;

Demo

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