首页 > 解决方案 > 如何将一列添加到 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。列“收入”不能为空

为什么专栏收入结果为空?我之前尝试将两列相乘并得到了预期的结果,所以它一定是代码中的东西。谢谢!

标签: mysqlsql

解决方案


将该列添加为计算列:

ALTER TABLE SalesOrderDetail
    ADD revenue NUMERIC(20, 4) GENERATED ALWAYS AS (UnitPrice*OrderQty) VIRTUAL;

然后在查询中使用该值时计算它。

请注意,这使用NUMERIC类型而不是浮点数。始终使用NUMERIC/DECIMAL表示货币金额。


推荐阅读