sql - Postgresql,对于表循环中的每个用户标识插入 x 次
问题描述
我不知道如何从 WITH 表中插入 x 次。我想为他们获得的每张票插入一张优惠券。我想要做的是:
WITH tic AS (
SELECT userid,
sum(price * ticketamount) AS total_price,
sum(ticketamount) As amount_of_tickets
FROM piljetter_system.soldtickets tic
WHERE consertid = 7
GROUP BY userid
)
UPDATE piljetter_system.users usr
SET pesetas = pesetas + tic.total_price
FROM tic
WHERE usr.userid = tic.userid;
对于 tic 中的每个 userId,请在以下时间插入 amount_of_tickets。就像每个用户标识的循环一样,插入 x 次。
INSERT INTO piljetter_system.coupons (tic.userid)
默认情况下,每张优惠券都会获得一个唯一编号。
我很感谢你能帮助我。
编辑:这是我可以用 generate_series() 做的事情吗?
解决方案
因此,我将您的两个答案混合在一起,以便能够做我想做的事情。这是适合我的完整版本。
WITH tic AS (
SELECT userid,
sum(price * ticketamount) AS total_price,
sum(ticketamount) As amount_of_tickets
FROM piljetter_system.soldtickets tic
WHERE consertid = consertidi
GROUP BY userid
),updated_tics AS (
UPDATE piljetter_system.users usr
SET pesetas = pesetas + tic.total_price
FROM tic
WHERE usr.userid = tic.userid
RETURNING usr.userid, tic.amount_of_tickets)
INSERT INTO piljetter_system.coupons (userid)
SELECT updated_tics.userid
FROM updated_tics CROSS JOIN LATERAL
generate_series(1, updated_tics.amount_of_tickets) gs(n);
推荐阅读
- javascript - Vuelidate获取vue实例
- java - 如何在android studio中的按钮上放置图像
- python - matplotlib 对数 y 轴格式
- websocket - 在 Rancher 的 LoadBalancer 中删除了 WebSocket 连接
- javascript - 使用 fetch api 发布 json 数据失败
- django - 如何在 Django-Rest 中序列化嵌套模型
- python - python TypeError:字符串索引必须是整数json
- angular - VM Clarity - clrForm 选择输入
- xaml - 如何使用动态计数 Xamarin.Forms 创建滑块
- reactjs - 将 sweetalerts2 与 api 调用一起使用