SQL: ERROR 1054 (42S22) having 子句中的未知列

SQL: ERROR 1054 (42S22) Unknown column in having clause

我在 Whosebug 中搜索了大约一个小时,但没有找到解决我的问题的方法。

select   Schueler.Vorname, Schueler.Nachname
from     Schueler, SchuelerLernt, Lehrer, Instrumente
group by Schueler.Snummer
having   Schueler.Snummer = SchuelerLernt.Snummer and
         SchuelerLernt.Lnummer = Lehrer.Lnummer and
         SchuelerLernt.Ibezeichnung = Instrumente.Ibezeichnung and
         count(Ibezeichnung) > 1;

当我使用命令源 test.sql 时,我收到此错误消息:

ERROR 1054 (42S22) Unknown column 'Schueler.Snummer' in 'having clause'

该列存在,我不知道哪里出了问题。

有人能修好吗?

你可能想要:

select Schueler.Snummer, Schueler.Vorname, Schueler.Nachname
from Schueler
JOIN SchuelerLernt
  ON Schueler.Snummer = SchuelerLernt.Snummer
JOIN Lehrer
  ON SchuelerLernt.Lnummer = Lehrer.Lnummer
JOIN Instrumente
  ON SchuelerLernt.Ibezeichnung = Instrumente.Ibezeichnung
group by Schueler.Snummer, Schueler.Vorname, Schueler.Nachname
having count(Ibezeichnung) > 1;

您应该使用 JOIN 语法而不是逗号语法。

您的 GROUP BY 子句应匹配 SELECT 子句或使用聚合函数。

编辑:

我不知道为什么不使用 JOIN 但如果你需要使用:

select   Schueler.Snummer, Schueler.Vorname, Schueler.Nachname
from     Schueler, SchuelerLernt, Lehrer, Instrumente
WHERE    Schueler.Snummer = SchuelerLernt.Snummer
  AND    SchuelerLernt.Lnummer = Lehrer.Lnummer
  AND    SchuelerLernt.Ibezeichnung = Instrumente.Ibezeichnung
group by Schueler.Snummer, Schueler.Vorname, Schueler.Nachname
having   count(Ibezeichnung) > 1;