现在,我想向SQL中的现有表中添加一个已经有数据的新列,该怎么办。
说我有一个带有列(id,价格,数量)的表临时文件,数据看起来像这样:
id price quantity
01 3 4
02 8 2
03 9 1
现在,我想使用以下代码获得列调用收益:
select id, price * quantity as revenue
from temp;
结果应如下所示:
id revenue
01 12
02 16
03 9
现在,我要使用此处的现有数据将此收入添加到临时表中
我尝试用'as'更改表,但它不起作用,并且我尝试用收益创建一个新表,在表中创建一个新列,然后使用'update'将给我这样的信息:
id price quantity revenue
01 3 4
02 8 2
03 9 1
null null null 12
null null null 16
null null null 9
那我该怎么办?
答案 0 :(得分:1)
我建议不实际上将新列添加到您的表中以获取收入,因为它只是从其他列派生的。相反,请考虑创建视图:
CREATE VIEW temp_revenue AS
SELECT id, price * quantity AS revenue
FROM temp;
如果您使用的是NDB存储引擎,那么您还可以利用计算列,例如
CREATE TABLE temp (
id INT AUTO_INCREMENT,
price DECIMAL(13,2) NOT NULL,
quantity INT NOT NULL,
revenue DECIMAL(13, 2) AS price * quantity,
PRIMARY KEY (id)
);
但是,如果您使用的是MyISAM或InnoDB,这将不是您的选择。
答案 1 :(得分:0)
回答您的问题:
ALTER TABLE temp ADD COLUMN revenue INT AFTER quantity;
UPDATE temp SET revenue = price * quantity;
这将添加新列,然后使用计算出的每一行的revenue
更新每一行的price * quantity
列值。