如何用SQL为表中列减去7%折扣?以Products表Price列为例
给Products表Price列打93折(减7%)的SQL实现方法
嗨,刚好之前处理过类似的需求,直接给你说清楚:SQL里**不能直接写Price - 7%**这种写法哦,因为数据库不认识单独的7%作为数值,得把百分比转换成小数来计算才行。
下面分两种常见场景给你示例:
1. 只是查询折扣后的价格(不修改原表)
如果只是想看看每个产品打完7%折扣后的价格,不想改动原数据,用SELECT语句就行,两种写法都可以:
- 写法一:直接乘以0.93(因为100%-7%=93%)
SELECT ProductID, ProductName, Price AS OriginalPrice, Price * 0.93 AS DiscountedPrice -- 折扣后价格 FROM Products;
- 写法二:用原价减去原价的7%,逻辑更直观
SELECT ProductID, ProductName, Price AS OriginalPrice, Price - (Price * 0.07) AS DiscountedPrice FROM Products;
2. 直接更新原表的Price列(永久修改数据)
如果要把数据库里的Price值直接改成折扣后的,就得用UPDATE语句了!注意:执行UPDATE前一定要备份数据,避免误操作无法恢复!
步骤:
- 先备份Products表(可选但强烈推荐)
-- 把原表数据备份到新表Products_Backup SELECT * INTO Products_Backup FROM Products;
- 执行更新操作
同样有两种等价写法:
-- 写法一:乘以0.93 UPDATE Products SET Price = Price * 0.93; -- 写法二:减去原价的7% UPDATE Products SET Price = Price - (Price * 0.07);
额外技巧:
- 如果Price是整数类型,或者想保留指定小数位数(比如两位),可以用
ROUND函数:
UPDATE Products SET Price = ROUND(Price * 0.93, 2); -- 保留两位小数
- 只想给特定产品打折?加
WHERE条件就行,比如只给类别ID为1的产品打折:
UPDATE Products SET Price = Price * 0.93 WHERE CategoryID = 1;
内容的提问来源于stack exchange,提问作者Vivaldi
相关产品推荐
相关产品推荐

