MySQL加入前一次出现的记录

时间:2015-12-11 01:19:14

标签: mysql sql subquery

我的查询列出了商店打开和关闭的日期。我想要的是之前的开放日期,例如2014-12-27,它将是2014-12-26。该商店在新年期间没有营业,因此2015-01-02将是2014-12-31。

每当我坐下来编写查询时,我都无处可去,我尝试了subselects,case语句,加入子查询,where子句中的子查询,我仍然无法解决这个问题。对此有任何帮助将不胜感激?

EDIT 澄清列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

2 个答案:

答案 0 :(得分:2)

请检查以下内容。

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;

答案 1 :(得分:1)

如果我不知道你,那看起来并不难。

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

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