【问题标题】:MySQL: Getting only one row for multiple rows with the same date?MySQL:同一日期的多行只获取一行?
【发布时间】:2013-02-22 09:04:52
【问题描述】:

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

谢谢!

【问题讨论】:

  • 您需要提供其余的标准 - 这取决于您在做什么将如何提供答案。
  • 你想要的结果是什么?
  • 能否请您发布您的查询和表格的结构?

标签: mysql date


【解决方案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;

【讨论】:

  • 不会 max(my_date) 只返回最新日期吗?在我的情况下 30.10.2012 01:51:10?
  • @user1856596 - 您必须使用 group by 来返回每个组的最大日期。你能发布表格的结构吗?
  • @user1856596 只是查询中涉及的列。这将非常有帮助。谢谢
【解决方案2】:

您只能像这样对日期进行分组:

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 |

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-13
    • 1970-01-01
    • 1970-01-01
    • 2012-09-08
    • 2015-07-30
    • 2018-08-28
    • 2011-06-01
    • 1970-01-01
    相关资源
    最近更新 更多