mysql - 如何将一列添加到 SQL 表中,该列是其他两列的乘积?
问题描述
我有一个名为 SalesOrderDetail 的表,我需要附加一个名为“Revenue”的列,它是另外两个列的乘积:UnitPrice 和 OrderQty。
我正在使用以下代码:
# creating columns revenue
ALTER TABLE SalesOrderDetail
ADD revenue DOUBLE NOT NULL;
# insert the revenues into the revenue column
INSERT INTO SalesOrderDetail(revenue)
SELECT UnitPrice*OrderQty
FROM SalesOrderDetail;
但我收到错误:错误代码:1048。列“收入”不能为空
为什么专栏收入结果为空?我之前尝试将两列相乘并得到了预期的结果,所以它一定是代码中的东西。谢谢!
解决方案
将该列添加为计算列:
ALTER TABLE SalesOrderDetail
ADD revenue NUMERIC(20, 4) GENERATED ALWAYS AS (UnitPrice*OrderQty) VIRTUAL;
然后在查询中使用该值时计算它。
请注意,这使用NUMERIC
类型而不是浮点数。始终使用NUMERIC
/DECIMAL
表示货币金额。
推荐阅读
- sql-server - 在包含键值对的存储库中编写查询方法以检查数据库
- android - 我遇到资源问题,它显示“资源目录名称无效”
- python - 如何修复一个不接受它返回的函数?
- apache - 如何通过 .htaccess 同时使用 HTTP 基本身份验证和 IP 地址来限制网站?
- html - 为什么会出现这种渲染伪影?
- angular - 如何在 Angular 中使用两个骨架模板?
- php - 使用带有日期的循环时我的代码中出现逻辑错误致命错误:未捕获的错误:调用成员函数 bind_param()
- powershell - 将今天的日期与 CSV 中的信息进行比较。如果匹配,执行命令
- html - google.script.run.withSuccessHandler 无法正常工作
- meteor - 路由 Meteor/React 应用程序,给它一个普通的 HTML 主页