MySQL按2个相邻日期分组

MySQL按2个相邻日期分组,mysql,Mysql,我有一个名为viewlist的表,如下所示 Id article_id viewdate -------------------------------------------------- 1 1 2015-07-01 2 1 2015-07-01 3 1

我有一个名为viewlist的表,如下所示

     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天。。。今天不是白天