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,我在列表末尾获取旧数据。但是如果新的日期记录可用,我根本不想要旧的日期记录。
答案 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
找到答案 2 :(得分:-2)
只需在查询末尾添加LIMIT 1
,即只选择第一行结果。