【发布时间】:2013-08-01 22:17:25
【问题描述】:
在 MySQL 中,我有一个包含几列的表,其中之一是日期列。 我希望能够进行查询,以便获得一个额外的列,显示当前日期(每行的日期)和上一行的日期之间的天数。
记录的顺序是按日期,我按其他列过滤。
例如
id other_col date days_between_dates
1 abc 2013-05-01 0
2 abc 2013-05-07 6
3 abc 2013-05-09 2
4 abc 2013-05-19 10
5 abc 2013-05-25 6
6 abc 2013-06-03 9
7 abc 2013-06-14 11
显然,由于第一行没有可比性,它应该显示0。
我知道我可以使用datediff MySQL 函数获取两个日期之间的差异,例如
select datediff('2013-06-03','2013-05-25');
我的基本查询是select * from mytable where other_col = 'something' order by date;
但是我如何进行查询以直接获得示例中的结果? (我需要额外的“days_between_dates”列)。
还请注意,通常 id 是有序的,并且没有间隙,但我不能保证这一点。只是我将按日期升序排序,并按“other_col”列过滤。
【问题讨论】:
-
表中的 id 是否保证是连续的(即它们是自动增量值,您永远不会删除行或更改自动增量值)?
-
是的,它们是顺序的,但我不知道是否可以删除,从而在 ID 中产生“间隙”。理想情况下(以及我见过的所有情况),id 总是连续的并且没有间隙,但可能并不总是 .对于这种情况,我们假设它们确实是连续的。