2013-10-28 103 views
0

假設我有一個名爲UserID的列和一個名爲Active的表,用戶名爲User History如果列值與另一列匹配,則返回最近一行

我知道我可以拿最近的用戶歷史

select userid, field1, field2 
from us_hi 
where (userid,timestamp) 
    IN (select userid, max (timestamp) 
     from userhistory 
     group by userid) 
order by userid 

,但我會怎麼做,如果我只是想通過使用從活躍用戶表userid查看活躍用戶?

+0

請告知您正在使用哪個RDBMS,例如mySQL,SQL Server,Oracle等。另外,請確認表格/列的確切名稱 – ChrisProsser

回答

0

子選擇讓所有的歷史表也存在於活躍用戶表的用戶,之後您加入子與主查詢選擇,這應該給你你正在尋找

SELECT USR.userid,field1, field2 
FROM userhistory USR 
INNER JOIN (SELECT UH.userid, max (UH.timestamp) timestamp 
      FROM userhistory UH 
      INNER JOIN ActiveUsers AU ON AU.UserId = UH.UserId 
      GROUP BY UH.userid) TMP ON TMP.userid = USR.userId AND USR.timestamp = UH.timestamp 
ORDER BY USR.userid 
結果
相關問題