2011-01-14 174 views
1

我正在選擇數據庫中的數據,我不確定如何繼續。mysql查詢幫助(根據時間戳選擇最新更新)

,我需要選擇最新更新

我的表是這樣的:

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

可以有DataTable中每個用戶的多個條目。對於該查詢我只需要從數據表中的每個用戶最新的條目:

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

回答

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 
+0

完美。謝謝!我對這個子查詢感到困惑,並進入了圈子。 – SylanderXS

0

有功能的SQL查詢來比較時。

我不確定你的時間戳是如何保存在數據庫中的,但如果它是一個數字,只需查看MAX()函數即可。如果不使用SQL語言中的時間或數據函數將其轉換爲整數。

對於MAX功能:http://dev.mysql.com/doc/refman/5.0/fr/example-maximum-row.html

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 
+0

這將返回一個隨機的datatable.userinfo,而不是最近的(甚至可能是嚴格SQL模式下的錯誤) – derobert