繁体   English   中英

MYSQL-“#1111-无效使用组函数”错误

[英]MYSQL - “#1111 - Invalid use of group function” error

我正在为学校项目编程一个气象站。

在mysql中,我的读数有1个表,计算值有另一个表。 我编写了一个mysql查询,用计算的值更新第二个表。 当我运行此查询时,我收到此错误

1111-无效使用组功能

我不知道我在做什么错。

我的查询:

 UPDATE Waarnemingen2 As t1
 INNER JOIN (SELECT `Datum_Tijd`,`Temperatuur`,`Luchtvochtigheid`,`Luchtdruk`,`Regenhoeveelheid` FROM Waarnemingen GROUP BY day(`Datum_Tijd`) + hour(`Datum_Tijd`)) as t2 
 SET t1.`Min. temperatuur` = MIN(`Temperatuur`), 
     t1.`Gem. temperatuur` = AVG(`Temperatuur`), 
     t1.`Max. temperatuur` = MAX(`Temperatuur`), 
     t1.`Min. luchtvochtigheid` = MIN(`Luchtvochtigheid`), 
     t1.`Gem. luchtvochtigheid` = AVG(`Luchtvochtigheid`), 
     t1.`Max. luchtvochtigheid` = MAX(`Luchtvochtigheid`), 
     t1.`Min. luchtdruk` = MIN(`Luchtdruk`), 
     t1.`Gem. luchtdruk` = AVG(`Luchtdruk`), 
     t1.`Max. luchtdruk` = MAX(`Luchtdruk`), 
     t1.`Regen` = SUM(`Regenhoeveelheid`)

该查询应每小时获取“ Temperatuur”,“ Luchtvochtigheid”和“ Luchtdruk”列中的最小值,最大值和平均值。

有没有人可以帮助我?

您的错误是因为SELECT语句中未聚合的列不在GROUP BY子句中。

在具有GROUP BY的SELECT中,您只能选择的列是:

  • 聚合(MAX(温度),MIN(Luchtdruk)等)
  • 分组列

否则,您将收到此错误。

更改子查询以执行聚合,然后将这些聚合值分配给联接表。

(我不知道MySQL语法,该代码在SQL Server中不起作用,因为它对UPDATE JOINs的处理有些不同,但是重要的概念是聚合。)

UPDATE Waarnemingen2 As t1
 INNER JOIN (

SELECT day(`Datum_Tijd`) as day, hour(`Datum_Tijd`) as hour, MIN(Temperatur) as Min_Temperature FROM Waarnemingen GROUP BY day(`Datum_Tijd`) , hour(`Datum_Tijd`)
) t2 on t1.day = t2.day and t1.hour = t2.hour
set
t1.MinTemp =  t2.Mintemp

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM