1
A
回答
1
您可以創建一個觸發器,像這樣:
CREATE TRIGGER `new_table_BEFORE_INSERT`
BEFORE INSERT ON `new_table`
FOR EACH ROW
set NEW.avgnum = (NEW.num1+NEW.num2+NEW.num3)/3
0
的Gabor的答案是正確的 - 你似乎需要一個簡單的數學運算,而不是SQL函數SUM
或AVERAGE
:
SELECT (num1 + num2 + num3)/3 AS avgNum FROM table_name
不管怎樣,我建議你閱讀有關數據庫設計的3rd normal form並相應地更改您的表格結構,因爲想想您將必須如何處理:
- 存儲另一個數字 - 您會添加另一列
num4
? - 找到所有已1和100之間的數字記錄,你將不得不使用複雜
OR
條款,而不是簡單的JOIN
+0
我有20 - 30列從不同的形式插入。這個平均值正在考慮另一個等式 – Sona 2015-04-01 07:59:21
1
如果你需要的東西,而插入和更新,以實現自動化,你可能需要使用觸發器
- 一個插入前計算平均值。
- 更新前一個並計算平均值。
這裏有兩個觸發需要
delimiter //
create trigger cal_average_on_insert before insert on test
for each row
begin
set new.avgnum = (new.num1+new.num2+new.num3)/3 ;
end;//
delimiter ;
delimiter //
create trigger cal_average_on_uodate before update on test
for each row
begin
set new.avgnum = (new.num1+new.num2+new.num3)/3 ;
end;//
delimiter ;
在這裏,您可以更改表名和字段名是一個測試用例在MySQL CLI
mysql> create table test (id int, num1 int, num2 int, num3 int, avgnum float(10,2));
Query OK, 0 rows affected (0.11 sec)
mysql> delimiter //
mysql>
mysql> create trigger cal_average_on_insert before insert on test
-> for each row
-> begin
-> set new.avgnum = (new.num1+new.num2+new.num3)/3 ;
-> end;//
Query OK, 0 rows affected (0.09 sec)
mysql>
mysql> delimiter ;
mysql> delimiter //
mysql>
mysql> create trigger cal_average_on_uodate before update on test
-> for each row
-> begin
-> set new.avgnum = (new.num1+new.num2+new.num3)/3 ;
-> end;//
Query OK, 0 rows affected (0.15 sec)
mysql> insert into test (id,num1,num2,num3) values (1,10,20,30);
Query OK, 1 row affected (0.04 sec)
mysql> insert into test (id,num1,num2,num3) values (2,30,40,50);
Query OK, 1 row affected (0.04 sec)
mysql> select * from test ;
+------+------+------+------+--------+
| id | num1 | num2 | num3 | avgnum |
+------+------+------+------+--------+
| 1 | 10 | 20 | 30 | 20.00 |
| 2 | 30 | 40 | 50 | 40.00 |
+------+------+------+------+--------+
2 rows in set (0.00 sec)
mysql> update test set num1=30, num2=50 where id=1 ;
Query OK, 1 row affected (0.11 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from test ;
+------+------+------+------+--------+
| id | num1 | num2 | num3 | avgnum |
+------+------+------+------+--------+
| 1 | 30 | 50 | 30 | 36.67 |
| 2 | 30 | 40 | 50 | 40.00 |
+------+------+------+------+--------+
2 rows in set (0.00 sec)
相關問題
- 1. Word中的自動求和表
- 2. gridview中的自動求和列
- 3. Aspose.Cells中的自動求和列
- 4. PHP和MySQL中的自動短信
- 5. 自動求和複選框
- 6. 如何自動求和列並保存到MySQL數據庫?
- 7. 在mysql中求和的總和
- 8. 求和在MySQL
- 9. php的要求和自動加載
- 10. 記錄和自動化的http請求
- 11. MySQL中的自動TRUNCATE表
- 12. Jquery中的自動除法和求和值
- 13. EasyPHP 16.1自動啓動http和mysql
- 14. MySQL的:將數據和自動增量
- 15. 中止請求自動
- 16. mysql查詢中的條件求和值
- 17. Mysql查詢中求和的平均值
- 18. MySQL的條件求和
- 19. MYSQL和IN的請求
- 20. 自動求和excel中的列的值與過濾
- 21. 自動觸發在MySQL中
- 22. 自動從MySQL
- 23. 自動在MySQL
- 24. 什麼驅動無序MySQL請求的自然結果順序
- 25. 無法使用公式中的LastCol自動求和
- 26. 自動求和,並在字表中的其他計算 - 蘋果
- 27. Django請求自動啓動
- 28. CodeIgniter中的自動完成MySQL與JQuery的自動完成
- 29. MySQL AUTO_INCREMENT和休眠自動ID生成
- 30. MySQL:多個主鍵和自動遞增
你的意思是類似'SELECT(num1 + num2 + num3)/ 3 AS avgNum FROM ...'? – 2015-04-01 07:26:07
是的。如果我改變num2的值自動平均必須改變。 – Sona 2015-04-01 07:31:02
您是否熟悉視圖(http://www.w3schools.com/sql/sql_view.asp)? – 2015-04-01 07:39:07