如何解决如何使用 SQL 中其他值基于时间戳更新表列的值?
我需要用另一个表中的值更新表中的空值。很快,这些值就是组的 id,我需要在我用户的所有事件中传递这些 groupid,以识别用户在哪个组中举办了这个活动。 示例:
输入:
表 A:
事件 | 时间戳 | groupid | 用户名 |
---|---|---|---|
创建 | 2021-03-09T09:58:17.198362522Z | c98 | |
更新 | 2021-03-09T09:59:17.198362522Z | c98 | |
创建 | 2021-03-09T09:46:17.198362522Z | a32 | |
更新 | 2021-03-09T10:20:17.198362522Z | c98 | |
更新 | 2021-03-09T10:22:17.198362522Z | c98 | |
创建 | 2021-03-09T09:58:17.198362522Z | a32 | |
创建 | 2021-03-09T10:40:17.198362522Z | c98 |
表 B:
groupid | 时间戳 | 用户名 |
---|---|---|
f13 | 2021-03-09T09:58:17.198362522Z | c98 |
f14 | 2021-03-09T10:15:17.198362522Z | c98 |
ad8 | 2021-03-09T09:45:00.198362522Z | a32 |
ad9 | 2021-03-09T09:58:17.198362522Z | a32 |
期望输出:
表 A:
事件 | 时间戳 | groupid | 用户名 |
---|---|---|---|
创建 | 2021-03-09T09:58:17.198362522Z | f13 | c98 |
更新 | 2021-03-09T09:59:17.198362522Z | f13 | c98 |
创建 | 2021-03-09T09:46:17.198362522Z | ad8 | a32 |
更新 | 2021-03-09T10:20:17.198362522Z | f14 | c98 |
更新 | 2021-03-09T10:22:17.198362522Z | f14 | c98 |
创建 | 2021-03-09T09:59:17.198362522Z | ad9 | a32 |
创建 | 2021-03-09T10:40:17.198362522Z | f14 | c98 |
解决方法
这不就是一个简单的连接吗?
update table1 a
set groupid = (select groupid from table2 b
where a.userid = b.userid
and a.timestamp >= b.timestamp
order by b.timestamp desc
limit 1
)
where a.groupid id null
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。