我有一个用户表,如下所示:
用户
userid | email | action | actiontimestamp
还有一些用户操作(登录,注销等)的另一个表,如下所示:
USER_ACTIONS
actionid | userid | action | actiontimestamp
我需要能够使用单个查询来更新USERS表的action和actiontimestamp值,其中它使用USER_ACTIONS表中的最新行。这可能吗?
答案 0 :(得分:0)
UPDATE users u
JOIN ( SELECT DISTINCT
userid,
FIRST_VALUE(action) OVER (PARTITION BY userid ORDER BY actiontimestamp DESC) action,
MAX(actiontimestamp) OVER (PARTITION BY userid) actiontimestamp
) ua USING (userid)
SET u.action = ua.action,
u.actiontimestamp = ua.actiontimestamp
PS。需要版本8+。对于更古老的版本,请使用具有2个相关查询的单表UPDATE。