将包含数据的列添加到mysql中的表

时间:2018-10-25 02:21:50

标签: mysql

现在,我想向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

那我该怎么办?

2 个答案:

答案 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列值。