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

MySQL语句,该语句对结果进行分组,但也返回组内另一列的最低值和最高值,mysql,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

好的,这是我的假设表:

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列返回最低值和最高值。因此,在另一面,我可以输出如下内容:

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

这在纯MySQL中是否可行?

如何:

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 
那么:

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 


我讨厌MySQL
groupby
-当您按
页面进行分组时,它返回的
Etc
是什么?它是否未定义?我的经验是,它返回代表行的值;您可以按
排序,强制它返回那里的特定行。那么,如果您使用最大值和最小值,会发生什么情况?其他列的值是多少?好问题。让我在某个地方试一下(这种特殊情况下,没有一个准备好的db来测试虚拟值,所以我必须在其他地方试一下)。BRBI它将提升较低的ID值和/或内部层次结构中较早出现的内容。在决定插入它想要的任何值之前,它确实按照它所排序的
。该部分似乎根本不受最小/最大值的影响。可能有一种合适的方法可以在continuation中提取特定的值集合,但我不是该问的人。我讨厌MySQL
groupby
-当您按
页面进行分组时,它返回什么
?它是否未定义?我的经验是,它返回代表行的值;您可以按
排序,强制它返回那里的特定行。那么,如果您使用
最大值和最小值,会发生什么情况?其他列的值是多少?好问题。让我在某个地方试一下(这种特殊情况下,没有一个准备好的db来测试虚拟值,所以我必须在其他地方试一下)。BRBI它将提升较低的ID值和/或内部层次结构中较早出现的内容。在决定插入它想要的任何值之前,它确实按照它所排序的
。该部分似乎根本不受最小/最大值的影响。可能有一种合适的方法可以在continuation中提取特定的值集合,但我不是要问的人。+1原始查询有
*
,虽然在MySQL中有效,但我不确定结果是什么。@Martin:我还考虑了他预期结果的输出,这似乎只显示了这3列。这是一个比我想象的更干净的解决方案。它只在
组中有意义,对吗?@Hoatzin:Yes,您需要使用
groupby
对每个页面应用聚合
MIN
MAX
函数。+1原始查询有
*
,虽然在MySQL中有效,但我不确定结果是什么。@Martin:我还考虑了他预期结果的输出,这似乎只显示了这3列。这是一个比我想象的更干净的解决方案。它只在
groupby
上下文中有意义,对吗?@Hoatzin:是的,您需要
groupby
将聚合
MIN
MAX
函数应用于每个页面。