在mysql中向表中添加一个包含数据的列

p3rjfoxz  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(270)

现在,我想添加一个新的列,其中的数据已经添加到sql中的现有表中,我应该怎么做。
假设我有一个带有列(id、price、quantity)的temp表,其数据如下所示:

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

现在我想把这个收入和现有数据一起添加到temp表中
我试过用'as'改变表,但不起作用,我还试过用revenue创建一个新表,在表中创建一个新列,然后使用'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

那我该怎么办?

blmhpbnm

blmhpbnm1#

我建议您不要在表中为revenue实际添加一个新列,因为它只是从其他列派生的。相反,请考虑创建一个视图:

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,这将不是您的选择。

dluptydi

dluptydi2#

回答您的问题:

ALTER TABLE temp ADD COLUMN revenue INT AFTER quantity;
UPDATE temp SET revenue = price * quantity;

这将添加新列,然后更新每行的 revenue 列值与计算的 price * quantity 每行的。

相关问题