sql - 如何使用 SQL 中其他列的值更新表列的值(基于时间戳)?
问题描述
我需要用另一个表中的值更新表中的空值。很快,这些值就是组的 id,我需要在我的用户的所有事件中传递这些 groupid,以识别用户在哪个组中举行了这个事件。例子:
输入:
表 A:
事件 | 时间戳 | 群号 | 用户身份 |
---|---|---|---|
创建 | 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:
群号 | 时间戳 | 用户身份 |
---|---|---|
f13 | 2021-03-09T09:58:17.198362522Z | c98 |
f14 | 2021-03-09T10:15:17.198362522Z | c98 |
广告8 | 2021-03-09T09:45:00.198362522Z | a32 |
广告9 | 2021-03-09T09:58:17.198362522Z | a32 |
期望的输出:
表 A:
事件 | 时间戳 | 群号 | 用户身份 |
---|---|---|---|
创建 | 2021-03-09T09:58:17.198362522Z | f13 | c98 |
更新 | 2021-03-09T09:59:17.198362522Z | f13 | c98 |
创建 | 2021-03-09T09:46:17.198362522Z | 广告8 | a32 |
更新 | 2021-03-09T10:20:17.198362522Z | f14 | c98 |
更新 | 2021-03-09T10:22:17.198362522Z | f14 | c98 |
创建 | 2021-03-09T09:59:17.198362522Z | 广告9 | 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
推荐阅读
- python - 当我试图在 heroku 上部署我的应用程序时。出现错误“未检测到默认语言”
- python - 如何将一个列表拆分为多个列表?
- javascript - 带有列名数组和另一个带有值的数组的循环
- c# - Xamarin 表单 OAuth
- python - 如何用空格键发射子弹?
- javascript - 如何在 JavaScript 中使用 put 作为路由调用
- css - 反应混合单位错误:无法在 css calc() 函数中一起计算 vw 和 px
- c++ - 调试在另一个应用程序中“使用”的控制台 ChessEngine.exe(国际象棋 GUI)
- javascript - 在原型上的多个函数之间共享状态
- css - 在小屏幕上的下一行制作按钮,但在 Bootstrap 4 的大屏幕上保持在同一行