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
字段的类型,你应该考虑使用日期类型,但我认为这应该可行。
请检查以下内容。
中的例子
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;
我的查询列出了商店开张和关门的日期。我想要的是之前的开放日期,例如 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
字段的类型,你应该考虑使用日期类型,但我认为这应该可行。
请检查以下内容。
中的例子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;