如何以sum()计算的客户总账户余额为条件更新customer_type字段
SQL实现方案
核心逻辑是先关联存款人表和账户表,按客户唯一ID分组计算总资产,过滤出总资产超过10000的客户ID,再对客户表执行更新操作,过滤聚合结果需要使用HAVING子句,分组键必须使用唯一的customer_id而非客户姓名,避免重名导致的更新错误。
通用兼容写法(支持所有主流关系型数据库)
UPDATE customer SET customer_type = 'VIP' WHERE customer_id IN ( SELECT d.customer_id FROM depositor d INNER JOIN account a ON d.account_number = a.account_number GROUP BY d.customer_id HAVING SUM(a.balance) > 10000 );
MySQL 多表更新写法
如果使用MySQL数据库,也可以用关联更新的写法,执行效率更高:
UPDATE customer c INNER JOIN ( SELECT d.customer_id FROM depositor d INNER JOIN account a ON d.account_number = a.account_number GROUP BY d.customer_id HAVING SUM(a.balance) > 10000 ) qualified_customer ON c.customer_id = qualified_customer.customer_id SET c.customer_type = 'VIP';
执行完成后,客户ID为ghi和stu的两条记录customer_type会被更新为VIP,其余客户不满足条件保持原值。
内容的提问来源于stack exchange,提问作者Shin
相关产品推荐
相关产品推荐

