SQL (postgresql) 使用连接中数据的间隔更新日期列 table
SQL (postgresql) update a date column using an interval from data in a join table
在我的 Postgresql 数据库中,我试图根据 table 和另一个 table 中的数据更新一个 table 中的列。在我的用户 table 中,我试图更新 new_date 列,方法是将单独的日期列中的数据添加到计划 table 中几个月的整数列(例如 new_date = 2022-02-27 + 5 个月);如果这是一个 table 我可以添加日期 + 间隔 '1 个月' * 个月,例如 - UPDATE users SET new_date = date + interval '1 month' * months;
但是,我无法弄清楚如何使用连接进行类似的更新table 在用户和计划之间,使用子查询或常见的 table 表达式。
用户table(简称):new_date根据更新日期 + 月
date
new_date
2022-05-21
null
2022-04-15
null
计划table(缩写)
months
5
1
加入 table: SELECT users.date, plans.months, users.new_date FROM users JOIN plans ON users.plan_id = plans.id
date
months
new_date
2022-05-21
5
2022-04-15
1
结果:
已更新用户table:
date
new_date
2022-05-21
2022-10-21
2022-04-15
2022-05-15
您可以连接表并在 UPDATE
语句中将列 months
的值乘以 INTERVAL '1 month'
:
UPDATE users AS u
SET new_date = u.date + INTERVAL '1 month' * p.months
FROM plans AS p
WHERE p.id = u.plan_id;
参见demo。
在我的 Postgresql 数据库中,我试图根据 table 和另一个 table 中的数据更新一个 table 中的列。在我的用户 table 中,我试图更新 new_date 列,方法是将单独的日期列中的数据添加到计划 table 中几个月的整数列(例如 new_date = 2022-02-27 + 5 个月);如果这是一个 table 我可以添加日期 + 间隔 '1 个月' * 个月,例如 - UPDATE users SET new_date = date + interval '1 month' * months;
但是,我无法弄清楚如何使用连接进行类似的更新table 在用户和计划之间,使用子查询或常见的 table 表达式。
用户table(简称):new_date根据更新日期 + 月
date | new_date |
---|---|
2022-05-21 | null |
2022-04-15 | null |
计划table(缩写)
months |
---|
5 |
1 |
加入 table: SELECT users.date, plans.months, users.new_date FROM users JOIN plans ON users.plan_id = plans.id
date | months | new_date |
---|---|---|
2022-05-21 | 5 | |
2022-04-15 | 1 |
结果:
已更新用户table:
date | new_date |
---|---|
2022-05-21 | 2022-10-21 |
2022-04-15 | 2022-05-15 |
您可以连接表并在 UPDATE
语句中将列 months
的值乘以 INTERVAL '1 month'
:
UPDATE users AS u
SET new_date = u.date + INTERVAL '1 month' * p.months
FROM plans AS p
WHERE p.id = u.plan_id;
参见demo。