0

我有一个 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 列不是每一行中唯一的列,但我希望它作为标准。我怎么能那样做?

谢谢!

4

2 回答 2

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;
于 2013-02-22T09:07:47.787 回答
0

您只能对日期进行分组,如下所示:

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

看到这个 SQLFiddle

结果:

| ID |                        MY_DATE |
---------------------------------------
|  1 | October, 29 2012 01:51:10+0000 |
|  2 | October, 30 2012 01:51:10+0000 |
于 2013-02-22T09:26:16.017 回答