2014-05-03 44 views
-1

mysql> select * from 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' 之間 'volatilidadediaria' 差異 - 'cotaminima'

+--------------------+ 
| volatilidadediaria | 
+--------------------+ 
|    1.60 | 
|    1.60 | 
|    1.80 | 
|    11.60 | 
|    4.60 | 
+--------------------+ 

回答

1

你嘗試過這樣的:

SELECT * , 
     cotamaxima - cotaminima AS volatilidadediaria 
FROM acoes 

編輯:

UPDATE acoes SET volatilidadediaria = cotamaxima - cotaminima 
+0

是正確的,但是這不更新自己的表。 =/ –

+0

如果你想更新然後嘗試我編輯的答案。 –

1
UPDATE acoes 
SET volatilidadediaria = cotamaxima - cotaminima 

但是,當然,你的數據庫中有冗餘,如果這些值必須經常更改(或永遠),這並不是很好。

0

上,您可以執行該語句的特設的基礎:

​​3210

不幸的是與SQL服務器不認爲我MySQL支持計算列,但如果你想保持柱最新當源值發生變化時,您可以在MySql中使用觸發器。請參閱answer

所以,你會執行(用於插入更新1和1)像這樣來創建觸發器:

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 ; 
相關問題