Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 我真的很喜欢把另外两个的区别放在一列,我该怎么办?_Mysql_Database_Subtraction - Fatal编程技术网

Mysql 我真的很喜欢把另外两个的区别放在一列,我该怎么办?

Mysql 我真的很喜欢把另外两个的区别放在一列,我该怎么办?,mysql,database,subtraction,Mysql,Database,Subtraction,mysql>从acoes中选择* +---------+----------+------------+------------+--------------------+ | idacoes | nomeacao | cotaminima | cotamaxima | volatilidadediaria | +---------+----------+------------+------------+--------------------+ | 1 | abev4 |

mysql>从acoes中选择*

+---------+----------+------------+------------+--------------------+
| 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 ;