MySQL:对于具有相同日期的多行只获取一行?

时间:2013-02-22 09:04:53

标签: mysql date

我有一个MySQL查询,它返回几行,日期在一列,这就是我的查询:

select * from (big subselect) sub

我得到6行例如​​,这6行中的一列有一个日期,该列名为my_date。有没有办法只获得那些日期不是同一天的行?例如:

29.10.2012 01:51:10
29.10.2012 01:51:10
29.10.2012 01:51:10
29.10.2012 02:43:18
29.10.2012 02:43:18
29.10.2012 02:43:18

- >我只想要其中一行,因为所有6行都是同一天。

29.10.2012 01:51:10
30.10.2012 01:51:10 --> different
29.10.2012 01:51:10
29.10.2012 02:43:18
29.10.2012 02:43:18
29.10.2012 02:43:18

- >我想要2行,因为有2天不同

my_date列不是每行中唯一的列,但我希望它作为条件。我怎么能这样做?

谢谢!

2 个答案:

答案 0 :(得分:1)

您只需要选择这些MAX(my_date),但您需要按其他文件进行分组。像这样:

select s1.*
from sub as s1
INNER JOIN
(
   SELECT MAX(my_date) AS MaxDate, SomeId
   FROM sub
   GROUP BY someId
) AS s2 ON s1.my_date = MaxDate AND s1.SomeId = s2.SomeId;

答案 1 :(得分:0)

您只能将这样的日期分组:

SELECT * FROM sub
GROUP BY DATE_FORMAT(my_date,'%Y-%m-%d')

See this SQLFiddle

结果:

| ID |                        MY_DATE |
---------------------------------------
|  1 | October, 29 2012 01:51:10+0000 |
|  2 | October, 30 2012 01:51:10+0000 |