【问题标题】:Get most recent date records from mysql从mysql获取最近的日期记录
【发布时间】:2014-03-10 19:21:59
【问题描述】:

tbl_contacts:-

user_id - int
contact_id - int
first_name - varchar
last_name - varchar
date_backup - TIMESTAMP

我有很多数据,我想从数据库中获取最新的数据。

目前我有 2 个不同日期的数据,1 个是 2014-02-12 04:47:39,另一个是 2014-01-12 04:47:39。我总共有 125 条记录,其中 5 条是 2014-01-12 04:47:39 日期,其余的是 2014-02-12 04:47:39。我正在使用以下查询来获取最新的日期数据,但它以某种方式返回所有数据。我一直在努力,但无法成功实现我的目标。如果有人有任何想法,请帮助我。

查询

 SELECT `contact_id`, `user_id`, `date_backup`, `first_name`, `last_name`
  FROM tbl_contacts WHERE `date_backup` IN (
    SELECT MAX(`date_backup`)
      FROM tbl_contacts WHERE `user_id`= 1 GROUP BY `contact_id`
  )
  ORDER BY `contact_id`ASC, `date_backup` DESC

通过使用 ORDER BY date_backup DESC,我得到了列表末尾的旧数据。但是如果有新的日期记录,我根本不想要旧的日期记录。

【问题讨论】:

  • 试试:ORDER BY date_backup DESC, contact_id ASC.
  • 不工作,最后仍然显示旧记录。

标签: mysql database date


【解决方案1】:

LIMIT 将在 MySQL 数据库中发挥作用(在其他数据库中可能是 TOP 子句)。所以使用 LIMIT 10

SELECT TOP 1 `contact_id`, `user_id`, `date_backup`, `first_name`, `last_name`
FROM tbl_contacts WHERE `date_backup` IN (
SELECT MAX(`date_backup`)
  FROM tbl_contacts WHERE `user_id`= 1 GROUP BY `contact_id`
)
ORDER BY `contact_id`ASC, `date_backup` DESC
LIMIT 10

如果你想要 10 个最近的。

LIMIT 子句的指南可以在MySQL reference找到

Similar kind of issue

【讨论】:

    【解决方案2】:

    用户 MySql UNIX_TIMESTAMP()ORDER BY 子句。

    SELECT `contact_id`, `user_id`, `date_backup`, `first_name`, `last_name`
      FROM tbl_contacts WHERE `date_backup` IN (
        SELECT MAX(`date_backup`)
          FROM tbl_contacts WHERE `user_id`= 1 GROUP BY `contact_id`
      )
      ORDER BY UNIX_TIMESTAMP(`date_backup`) DESC, `contact_id`ASC
    

    如果需要将所有date_backup 更改为UNIX_TIMESTAMP(`date_backup`)

    【讨论】:

      【解决方案3】:

      只需在查询末尾添加LIMIT 1 即可仅选择第一行结果。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-02
      • 1970-01-01
      • 2013-10-31
      • 2012-10-13
      • 2019-05-22
      • 1970-01-01
      相关资源
      最近更新 更多