MYSQL - “#1111 - 无效使用组功能”错误

时间:2016-05-05 14:41:23

标签: mysql

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

在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”列中取最小值,最大值和平均值。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

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

在带有GROUP BY的SELECT中,您可以选择的唯一列是:

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

否则会出现此错误。

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

(我不知道MySQL的语法,这段代码在SQL Server中不起作用,因为它的UPDATE JOIN有点不同,但重要的概念是聚合。)

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