[mysql]参照另一列中的计算值

标签: sql MySQL phpmyadmin
发布时间: 2017/1/9 22:49:40
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我试图在另一个表中的另一列中显示计算出的值。 可有人请解释为什么这不起作用

CREATE TABLE #Medition (ID int,AVG decimal(18,4))
INSERT INTO #Medition (ID, AVG) 
SELECT ID, SUM(125Hz + 250Hz + 500Hz + 750Hz + 1000Hz + 1500Hz + 2000Hz + 3000Hz + 4000Hz + 6000Hz + 8000Hz)/11 AS AVG FROM tonvarden 
UPDATE matningar  SET matningar.tonmedelvarde =
#Medition.AVG FROM matningar INNER JOIN #Medition ON matningar.ID =#Medition.ID
 DROP TABLE #Medition

我得到这个错误

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO #Medition (ID, AVG) SELECT ID, SUM(125Hz + 250Hz + 500Hz + 750Hz + ' at line 2

解决方法 1:

无需创建一个临时表来做到这一点。

UPDATE matningar a
join tonvarden b on a.ID = b.ID
set a.tonmedelvarde = (`125Hz` + `250Hz` + `500Hz` + `750Hz` + `1000Hz` + 
                          `1500Hz` + `2000Hz` + `3000Hz` + `4000Hz` + `6000Hz` + 
                          `8000Hz`)/11;

如果你想要更新 matningar,每当一个新行插入到 tonvarden,然后你就可以创建下面的触发器︰

create trigger update_matningar before insert on tonvarden
for each row 
update matningar 
set tonmedelvarde = 
    (new.`125Hz` + new.`250Hz` + new.`500Hz` + new.`750Hz` 
        + new.`1000Hz` + new.`1500Hz` + new.`2000Hz` 
        + new.`3000Hz` + new.`4000Hz` + new.`6000Hz` 
        + new.`8000Hz`)/11
where id = new.id;
官方微信
官方QQ群
31647020