我有以下专栏:
ID DATE NAME
1 2012-10-03 12:00:00 John
2 2012-10-03 13:00:00 Adam
3 2012-10-10 10:00:00 Pete
我希望在某些日期之间返回所有列,但每月和每天只返回1列。我尝试过使用一个明确的语句,但我似乎无法按月和日返回所有列(也需要花时间考虑)。
我想要的结果是:
ID DATE NAME
1 2012-10-03 12:00:00 John
3 2012-10-10 10:00:00 Pete
由于这两列不共享同一个月和/或一天。我知道这是一个简单的陈述。现在我正在使用:
SELECT id, DISTINCT date, name FROM table WHERE date BETWEEN ? AND ?
答案 0 :(得分:1)
您可以尝试按日期对其进行分组
SELECT id, date, name
FROM table
WHERE date BETWEEN ? AND ?
Group By date_format(date, '%Y-%m-%d')
答案 1 :(得分:1)
SELECT a.*
FROM tableName a
INNER JOIN
(
SELECT DATE(`DATE`) dateOnly, MIN(ID) minID
FROM tableName
GROUP BY DATE(`DATE`)
) b ON a.ID = b.MinID AND
DATE(a.`DATE`) = b.dateOnly
WHERE a.`DATE` BETWEEN ? AND ?
答案 2 :(得分:0)
您可以使用此查询 -
SELECT ID, DATE, NAME FROM table
GROUP BY DATE(DATE)
...添加WHERE条件。