MySQL按2个相邻日期分组
我有一个名为viewlist的表,如下所示MySQL按2个相邻日期分组,mysql,Mysql,我有一个名为viewlist的表,如下所示 Id article_id viewdate -------------------------------------------------- 1 1 2015-07-01 2 1 2015-07-01 3 1
Id article_id viewdate
--------------------------------------------------
1 1 2015-07-01
2 1 2015-07-01
3 1 2015-07-01
4 2 2015-07-01
5 2 2015-07-01
6 1 2015-07-02
7 2 2015-07-02
8 1 2015-07-03
9 2 2015-07-03
10 1 2015-07-05
11 1 2015-07-05
----------------------------------------------------
article_id count date_period
-----------------------------------------------------------------
1 4 2015-07-01 - 2015-07-02
2 3 2015-07-01 - 2015-07-02
1 1 2015-07-03 - 2015-07-04
2 1 2015-07-03 - 2015-07-04
1 2 2015-07-05 - 2015-07-06
我需要编写一个MySQL查询,通过分组相邻的viewdate字段来获取count和article_id
结果如下
Id article_id viewdate
--------------------------------------------------
1 1 2015-07-01
2 1 2015-07-01
3 1 2015-07-01
4 2 2015-07-01
5 2 2015-07-01
6 1 2015-07-02
7 2 2015-07-02
8 1 2015-07-03
9 2 2015-07-03
10 1 2015-07-05
11 1 2015-07-05
----------------------------------------------------
article_id count date_period
-----------------------------------------------------------------
1 4 2015-07-01 - 2015-07-02
2 3 2015-07-01 - 2015-07-02
1 1 2015-07-03 - 2015-07-04
2 1 2015-07-03 - 2015-07-04
1 2 2015-07-05 - 2015-07-06
有什么简单的查询可以得到这种类型的结果吗?您可以在这些行中使用一些东西
SELECT v.article_id, COUNT(*), CONCAT(b.dt, ' - ', b.dt2) as 'date_period'
FROM viewlist v INNER JOIN
(SELECT a.dt, DATE_ADD(a.dt, INTERVAL 1 DAY) AS dt2 FROM (SELECT DISTINCT(viewdate) AS dt FROM viewlist WHERE (DAY(viewdate) MOD 2) = 1) a) b ON v.viewdate BETWEEN b.dt AND b.dt2
GROUP BY 1, 3
ORDER BY b.dt
是否可以将相邻的两个日期行分组,即通过组合2015-07-01和2015-07-02、2015-07-03和2015-07-05进行分组您可以使用一个间隔,一天或两天或三天或…,只要您不想每次数据更改时都更改查询。要更改间隔,只需将间隔1天更改为间隔2天或间隔3天。。。今天不是白天