我又一次迷失了:) 经过搜索,找不到适合我的独特答案,我很乐意为您的问题提供帮助。
我有一个看起来像这样的表:
USERID EVENT CREATED_DATE
223 USER_CREATED 2018-26-10 00:00:00
223 USER_ACTIVATED 2019-01-01 00:00:00
245 USER_CREATED 2018-21-10 00:00:00
245 USER_ACTIVATED 2019-03-01 00:00:00
261 USER_CREATED 2018-22-10 00:00:00
261 USER_ACTIVATED 2019-09-01 00:00:00
257 USER_CREATED 2018-27-10 00:00:00
我要更改的是USER_ACTIVATED事件的日期,我希望它们与相关的USER_CREATED事件日期匹配,关键是USERID。
例如,对于USERID = 223,USER_CREATED日期为“ 2018-26-10 00:00:00”,因此USER_ACTIVATED日期也应为“ 2018-26-10 00:00:00”。
我需要一个UPDATE查询。
几点:
最后,更新的结果应为:
USERID EVENT CREATED_DATE
223 USER_CREATED 2018-26-10 00:00:00
223 USER_ACTIVATED 2018-26-10 00:00:00
245 USER_CREATED 2018-21-10 00:00:00
245 USER_ACTIVATED 2018-21-10 00:00:00
261 USER_CREATED 2018-22-10 00:00:00
261 USER_ACTIVATED 2018-22-10 00:00:00
257 USER_CREATED 2018-27-10 00:00:00
答案 0 :(得分:1)
我认为这可以满足您的要求
update t
set created_date = (select t2.created_date
from t t2
where t2.userId = t.userId and
t2.event = 'USER_CREATED'
)
where event = 'USER_ACTIVATED';
答案 1 :(得分:1)
进行此更新的一种方法是通过CTE /子查询语法:
UPDATE (
SELECT t1.CREATED_DATE AS CD1, t2.CREATED_DATE AS CD2
FROM yourTable t1
INNER JOIN yourTable t2
ON t1.USERID = t2.USERID
WHERE t1.EVENT = 'USER_CREATED' AND t2.EVENT = 'USER_ACTIVATED'
)
SET CD2 = CD1;