Mysql 我真的很喜欢把另外两个的区别放在一列,我该怎么办?
mysql>从acoes中选择*Mysql 我真的很喜欢把另外两个的区别放在一列,我该怎么办?,mysql,database,subtraction,Mysql,Database,Subtraction,mysql>从acoes中选择* +---------+----------+------------+------------+--------------------+ | idacoes | nomeacao | cotaminima | cotamaxima | volatilidadediaria | +---------+----------+------------+------------+--------------------+ | 1 | abev4 |
+---------+----------+------------+------------+--------------------+
| idacoes | nomeacao | cotaminima | cotamaxima | volatilidadediaria |
+---------+----------+------------+------------+--------------------+
| 1 | abev4 | 10.20 | 11.80 | 0.00 |
| 2 | petr3 | 8.20 | 9.80 | 0.00 |
| 3 | votr2 | 15.00 | 16.80 | 0.00 |
| 4 | itau3 | 28.20 | 39.80 | 0.00 |
| 5 | mglu5 | 16.20 | 20.80 | 0.00 |
+---------+----------+------------+------------+--------------------+
我想在“挥发性物质”一栏中写下“cotamaxima”和“cotaminima”之间的区别
+--------------------+
| volatilidadediaria |
+--------------------+
| 1.60 |
| 1.60 |
| 1.80 |
| 11.60 |
| 4.60 |
+--------------------+
你试过这个吗:
SELECT * ,
cotamaxima - cotaminima AS volatilidadediaria
FROM acoes
编辑:
但当然,数据库中存在冗余,如果这些值必须经常(或永远)更改,这就不是很好了。在临时基础上,您可以执行以下语句:
更新acoes集合volatiidadediaria=cotamaxima-cotaminima
不幸的是,与SQLServer不同,我认为MySql不支持计算列,但是如果您想在源值更改时保持列的最新状态,可以在MySql中使用触发器
看看这个
因此,您可以执行类似的操作来创建触发器(1个用于插入,1个用于更新):
UPDATE acoes SET volatilidadediaria = cotamaxima - cotaminima
UPDATE acoes
SET volatilidadediaria = cotamaxima - cotaminima
DELIMITER |
CREATE TRIGGER volatilidadediaria_insert BEFORE INSERT ON acoes
FOR EACH ROW BEGIN
SET NEW.volatilidadediaria = NEW.cotamaxima - NEW.cotaminima;
END;
|
CREATE TRIGGER volatilidadediaria_update BEFORE UPDATE ON acoes
FOR EACH ROW BEGIN
SET NEW.volatilidadediaria = NEW.cotamaxima - NEW.cotaminima;
END;
|
DELIMITER ;