sql - 执行更新查询,设置 True if condition 和 False if not condition
问题描述
我需要编写一个存储过程,它可以将客户返回给我,这些客户属于特定的细分市场,因为他们在特定时间范围内的购买行为。
对于这些客户,细分字段将设置为 true,如果他们的细分为 true,则未从给定查询中出来的客户需要设置为 false。
我对程序本身有疑问,我认为返回类型有问题,有人可以帮忙吗?
是否可以在不使用时态表的情况下将未从查询中出来的值设置为值 FALSE?
CREATE OR REPLACE FUNCTION segment_men1() AS
RETURNS void AS
$BODY$
BEGIN
FOR r IN
SELECT AD.id FROM account AD
INNER JOIN transactions TRA ON TRA.customerID = AD.id
WHERE AD.gender = "male"
AND TRA.transactionDate >= current_date - interval "365" days;
LOOP
UPDATE account
SET Segment_Men = true
WHERE NEXT r;
END LOOP;
RETURN;
END
$BODY$
LANGUAGE 'plpgsql';
非常感谢你的帮助
解决方案
你为什么要为此使用循环?直接更新即可:
UPDATE account AD
SET Segment_Men = true
FROM transactions TRA
WHERE TRA.customerID = AD.id AND
AD.gender = 'male' AND
TRA.transactionDate >= current_date - interval '365' days;
推荐阅读
- javascript - 即使加载 1000 条记录,光滑的网格也太慢了
- c# - 从客户端获取 C# 中的当前 IP 地址
- c# - 使用 C# 将数据添加到我的 Sql 数据时出现“程序需要未提供的参数”错误
- jmeter - Jmeter工具,线程循环计数是永远的,线程数1以增量方式跳过循环控制器中的html页面
- google-app-engine - 特定服务的 AppEngine 防火墙
- html - CSS 根据屏幕大小更改内容
- python - 连接两个文件并根据另一列填充新列
- mysql - sql查询仅适用于1条记录
- angular - 使用 Angular 和 Web API 保存图像和视频的最佳方法
- c# - 插座。正确获得响应