从mysql获取最新的日期记录

时间:2014-02-12 12:46:45

标签: mysql database date

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,我在列表末尾获取旧数据。但是如果新的日期记录可用,我根本不想要旧的日期记录。

3 个答案:

答案 0 :(得分:0)

用户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`)

答案 1 :(得分:0)

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

如果你想要最近的

LIMIT 条款指南可在MySQL reference

找到

Similar kind of issue

答案 2 :(得分:-2)

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