簡體   English   中英

如果列值與另一列匹配,則返回最新行

[英]Return most recent row if column value matches from another column

假設我有一個名為UserID的列和一個名為Active Users的表,然后有一個稱為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查看活動用戶,該怎么辦?

子選擇將歷史記錄表中的所有用戶也存在於活動用戶表中,然后將子選擇與主查詢結合在一起,這應該為您提供所需的結果

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM