MySQL加入上一条记录

MySQL joining the previous occurrence of a record

我的查询列出了商店开张和关门的日期。我想要的是之前的开放日期,例如 2014-12-27 就是 2014-12-26。这家商店在新年不营业,因此 2015 年 1 月 2 日将是 2014 年 12 月 31 日。

每次我坐下来写查询时,我都一无所获,我尝试了子选择、case 语句、连接子查询、where 子句中的子查询,但我仍然无法弄清楚这一点。对此有任何帮助将不胜感激?

编辑 澄清列 date_nk 是一个整数,并添加列 "previous_date" 以显示所需的输出。

    date_nk         weekday     opened     previous_open_date
1.  20141226        Friday      1          20141225
2.  20141227        Saturday    0          20141226
3.  20141228        Sunday      0          20141226
4.  20141229        Monday      1          20141226 
5.  20141230        Tuesday     1          20141229
6.  20141231        Wednesday   1          20141230
7.  20150101        Thursday    0          20141231 
8.  20150102        Friday      1          20141231
9.  20150103        Saturday    0          20150102 
10. 20150104        Sunday      0          20150102

看懂了就不难了

SELECT * FROM table WHERE opened = '1' AND date_nk < 'yourdate' LIMIT 1;

我不知道你的 date_nk 字段的类型,你应该考虑使用日期类型,但我认为这应该可行。

请检查以下内容。

SQL Fiddle

中的例子
SELECT 
 date_nk, 
 weekday,
 opened,
 (select max(date_nk) from OpenTable PO
  where PO.date_nk < CU.date_nk and
       PO.Opened = 1) PrevDate
  from OpenTable CU
  order by date_nk;