MySQL语句对结果进行分组,但也返回组内另一列的最低值和最高值

时间:2011-01-13 15:43:06

标签: mysql

好的,这是我的假设表:

Id     Page       Timestamp     Etc

 1        1      2009-10-10     ...
 2        1      2009-10-13     ...
 3        1      2009-10-14     ...
 4        1      2009-10-20     ...
 5        2      2009-10-24     ...
 6        2      2009-10-27     ...
 7        2      2009-11-06     ...
 8        3      2009-11-06     ...
 9        4      2009-11-07     ...
10        4      2009-11-20     ...
11        4      2009-11-21     ...

我需要的是一个查询,每行返回页码...

SELECT * FROM `hypothetical_table` WHERE `Visible` = 1 AND `foo` = 'blargh' GROUP BY `Page` HAVING COUNT(`Page`) >= 1 ORDER BY `Page` ASC   

...但还会从组中的Timestamp列返回最低值和最高值。因此,在另一方面,我可以输出如下内容:

Page 1 (2009年10月10日至2009年10月20日)
Page 2 (2009年10月24日至2009年11月6日)
Page 3 (2009年11月6日)
Page 4 (2009年11月7日至2009年11月21日)

这对于直接MySQL是否可行?

1 个答案:

答案 0 :(得分:1)

怎么样:

SELECT `Page`, MIN(`Timestamp`) as StartDate, MAX(`Timestamp`) as EndDate
    FROM `hypothetical_table` 
    WHERE `Visible` = 1 
        AND `foo` = 'blargh' 
    GROUP BY `Page` 
    HAVING COUNT(`Page`) >= 1 
    ORDER BY `Page` ASC