2011-07-24 122 views

回答

11

這是不可能做到這一點完全是,但你可以根據它結合了他們一個查詢創建視圖:

CREATE VIEW `my_wacky_view` AS 
SELECT `number1`, `number2`, `number1` + `number2` AS `total` 
FROM `test1`; 

我會避免實際將組合數據存儲在表中,除非您要運行大量查詢來引用WHERE子句中的組合數據。

+0

我懷疑使用查詢緩存可以很好地服務很多讀取。雖然,首先測量:) – spacediver

+0

+1意見低估恕我直言。我非常喜歡他們捕獲色譜柱計算的方式,而不是在每次選擇時重複它。他們也很好地堆疊(即查看視圖等)。 – Bohemian

+1

我總是在我的查詢中使用像這樣的VIEW或'SELECT num1 + num2 FROM test'。考慮計算列(或在MySQL中使用觸發器)會在表增長太大(數百萬行)並且查詢開始變慢之後進行。或者如果計算非常複雜而不是簡單的加法/乘法。 –

4

您可以在表上創建一個觸發器,以便MySQL每計算一次INSERT發生在您的test1表上就會計算並自動插入該列值。使表:

create table test1 (
    number1 int, 
    number2 int, 
    number3 int 
); 

然後創建一個觸發的觸發

CREATE TRIGGER triggername AFTER INSERT 
ON test1 
FOR EACH ROW 
UPDATE test1 SET NEW.number3=NEW.number1+NEW.number2 

MySQL文檔: http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html

確保添加了ON UPDATE觸發器,以及如果你期望的更新發生在行。

0

小FIX:

CREATE TRIGGER triggername BEFORE INSERT 
ON test1 
FOR EACH ROW 
SET NEW.number3=NEW.number1+NEW.number2 
+0

爲什麼這被認爲是一個修復? – 10basetom

3

我有這個問題爲好。從埃德加·貝拉斯克斯」答案在這裏,而答案this question,我偶然發現了這個咒語:

CREATE TRIGGER insert_t BEFORE INSERT 
ON test1 
FOR EACH ROW 
SET NEW.number3=NEW.number1+NEW.number2; 

CREATE TRIGGER insert_t_two BEFORE UPDATE 
ON test1 
FOR EACH ROW 
SET NEW.number3=NEW.number1+NEW.number2; 

這對我的作品在MySQL 22年6月5日。

相關問題