2011-01-13 46 views
1

好的內的最高值,所以這是我的假設表: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列的最低和最高值。以便在不利的一面,我可以輸出類似:

•(10月10日2009年二○○九年十月二十○日)
第2頁(從2009年10月24日至2009年11月6日)
第3頁(2009年11月6日)
第4頁(從2009年11月7日至2009年11月21日)

這甚至直MySQL的可行?

+0

我恨MySQL的`GROUP BY` - 這是什麼返回`Etc`當你用'Page`組是不確定的? – 2011-01-13 15:49:48

+0

我的經驗是,它返回代表行的值;你可以通過'ORDER BY'來強制它返回一個特定的行。 – Hoatzin 2011-01-13 15:57:51

回答

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 
相關問題