mysql查询帮助(根据时间戳选择最新更新)

时间:2011-01-14 18:36:14

标签: sql mysql

我正在努力选择数据库中的数据,但我不确定如何继续。

我需要选择最新的更新

我的表格如下:

datatable: userid, userinfo, updated (timestamp);
usertable: userid, username, realname, email, userNumber, Org, SN, Dept.

每个用户的数据表中可以有多个条目。对于此查询,我只需要数据表中每个用户的最新条目:

SELECT datatable.userid, 
       datatable.userinfo, 
       datatable.updated, 
       usertable.username 
  FROM datatable 
  JOIN usertable ON datatable.userid = usertable.userid 
 WHERE (....)

3 个答案:

答案 0 :(得分:6)

使用:

SELECT d.userid, 
       d.userinfo, 
       d.updated, 
       u.username 
  FROM datatable d
  JOIN usertable u ON u.userid = d.userid
  JOIN (SELECT t.userid,
               MAX(t.updated) AS max_updated
          FROM DATATABLE t
      GROUP BY t.userid) x ON x.userid = d.userid
                          AND x.max_updated = d.updated

答案 1 :(得分:0)

在sql查询中有比较时间的功能。

我不确定你的时间戳是如何在db中保存的,但如果它是一个数字,只需看看MAX()函数。如果不使用sql语言中的Time或Data函数来生成整数。

对于MAX函数:http://dev.mysql.com/doc/refman/5.0/fr/example-maximum-row.html

答案 2 :(得分:0)

SELECT 
    datatable.userid, 
    datatable.userinfo, 
    datatable.updated, 
    usertable.username 
FROM datatable JOIN  usertable ON datatable.userid = usertable.userid 
WHERE datatable.updated = ( 
    SELECT MAX(datatable.updated) 
    FROM datatable 
    WHERE datatable.userid = usertable.userid 
    LIMIT 1
)
GROUP BY usertable.userid