好的,这是我的假设表:
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是否可行?
答案 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