分组中的第一个和最后一个记录。无法获得最后

时间:2012-09-08 11:16:08

标签: php mysql

我有一张桌子

Date        value1  value2
2012-09-07  1       1
2012-09-06  2       2
2012-09-05  3       3
2012-09-04  4       4
2012-09-03  5       5
2012-08-31  6       6
2012-08-30  7       7
2012-08-29  8       8
2012-08-28  9       9
2012-08-27  10      10
2012-08-24  11      11
2012-08-23  12      12
2012-08-22  13      13

表中的值不像示例那样提升。有随机数字。

我需要在一周开始时获取一周的日期,value1,并在本周末获得value2

日期字段是唯一的,它只存储日期日期,因此不允许重复日期。

我尝试使用以下查询:

SELECT MIN(`Date`) as Date, 
    (SELECT `value1` ORDER BY `Date` ASC LIMIT 1) as Start, 
    (SELECT `value2` ORDER BY `Date` DESC LIMIT 1) as End
FROM table
GROUP BY YEAR(`Date`), WEEK(`Date`,7)

查询正确地返回分组周和value1,但value2也来自周开始的行,即

2012-08-27  10      10

但我需要:

2012-08-27  10      6

我做错了什么?

1 个答案:

答案 0 :(得分:1)

这样的事情

SELECT `date`, value1 as Start, 
(SELECT value2 FROM photos WHERE t.date >= adddate(`Date`, INTERVAL 1-DAYOFWEEK(`Date`) DAY) AND  t.date <= adddate(`Date`, INTERVAL 7-DAYOFWEEK(`Date`) DAY) ORDER BY date DESC LIMIT 1) as endDate
from table t 
GROUP BY YEAR(`Date`), WEEK(`Date`,7)

可能有一种更优化的方式来实现它......但是这可行