Mysql查询在每日记录上建立组日期

Mysql查询在每日记录上建立组日期,mysql,date,Mysql,Date,我有一个带有日期和价格的表格,每条记录显示如下: Day_date Price 2012-05-20 500 2012-05-21 500 2012-05-22 500 2012-05-23 600 2012-05-24 600 2012-05-25 500 2012-05-26 500 2012-05-27 700 2012-05-28 700 我想做的是显示如下: season 2012-05-20 to 2012-05-22 price 500 season 2012-05-23 t

我有一个带有日期和价格的表格,每条记录显示如下:

Day_date   Price
2012-05-20 500
2012-05-21 500
2012-05-22 500
2012-05-23 600
2012-05-24 600
2012-05-25 500
2012-05-26 500
2012-05-27 700
2012-05-28 700
我想做的是显示如下:

season 2012-05-20 to 2012-05-22 price 500
season 2012-05-23 to 2012-05-24 price 600
season 2012-05-25 to 2012-05-26 price 500
season 2012-05-27 to 2012-05-28 price 700
我尝试使用以下查询来完成此操作:

SELECT min(day_add) as start_date, max(day_add) as end_date, price 
FROM table GROUP BY price
通过此查询,我得到以下结果:

2012-05-20  2012-05-26  500
2012-05-23  2012-05-24  600
2012-05-27  2012-05-28  700
正如你所看到的,我想做的是,第一个记录的
price=500
应该是2012年5月20日至22日,然后第三名应该是5月25日至26日,即
price=500

因为我是按价格分组的,所以它将季节从2012年5月25日缩短到26日

是否可以执行
选择
以获得我想要的结果


谢谢

问题不在于查询本身,而在于数据,因为没有分组依据的值。你所要做的就是创造新的价值

您可以这样做:

select min(day_date) minDate, max(day_date) maxDate, price from (
  select day_date, @row := @row + (@price != price) grp, @price := price price
  from t, (select @row := 0, @price := '') init
  order by day_date
) final
group by final.grp, price

您可以在这里玩。

您好,莫斯蒂,谢谢您的回复。我确实尝试过,效果很好。我只是想了解您使用的语法是如何工作的,如果我有另一个名为allocation的列,其中所有值都是=2,我将如何对它进行分组?@user1361389嘿!只需删除外部选择和分组方式。你会看到我在那里玩的把戏。如果您已经有某种列,每个组的值不同,那么您可以使用它。如果你不这样做,你就必须这样做。