如何实现按产品名称对price列进行差异化乘法运算?
按行差异化更新/计算价格的SQL实现
首先,你的数据表结构和数据如下:
customer_id(int) , product_name(varchar) , price(int) 1 LV 5 2 MK 15 3 YSL 16
根据需求,我们可以用CASE WHEN语句实现差异化乘法运算,分两种场景处理:
1. 仅查询计算后的结果(不修改原表数据)
如果只是想查看计算后的价格,不需要改动原表,用SELECT语句配合CASE逻辑即可:
SELECT customer_id, product_name, price, CASE product_name WHEN 'LV' THEN price * 10 WHEN 'MK' THEN price * 10 WHEN 'YSL' THEN price * 20 ELSE price -- 处理未指定的产品,保留原价格 END AS new_price FROM your_table_name; -- 替换成你的实际表名
执行后返回的结果集示例:
| customer_id | product_name | price | new_price |
|---|---|---|---|
| 1 | LV | 5 | 50 |
| 2 | MK | 15 | 150 |
| 3 | YSL | 16 | 320 |
2. 直接更新原表中的price字段
如果需要永久修改原表的价格数据,使用UPDATE语句:
UPDATE your_table_name -- 替换成你的实际表名 SET price = CASE product_name WHEN 'LV' THEN price * 10 WHEN 'MK' THEN price * 10 WHEN 'YSL' THEN price * 20 ELSE price -- 其他产品价格不变 END;
若只想更新指定的三种产品,可添加WHERE条件提升执行效率:
UPDATE your_table_name SET price = CASE product_name WHEN 'LV' THEN price * 10 WHEN 'MK' THEN price * 10 WHEN 'YSL' THEN price * 20 ELSE price END WHERE product_name IN ('LV', 'MK', 'YSL');
内容的提问来源于stack exchange,提问作者ASD
相关产品推荐
相关产品推荐

