MySQL列在哪里=不同

时间:2012-10-03 06:24:21

标签: mysql

我有以下专栏:

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 ?

3 个答案:

答案 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 ?

SQLFiddle Demo

答案 2 :(得分:0)

您可以使用此查询 -

SELECT ID, DATE, NAME FROM table
GROUP BY DATE(DATE)

...添加WHERE条件。