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

时间:2015-12-12 12:08:22

标签: mysql sql mysql-error-1054

我已经在stackoverflow中搜索了大约一个小时而没有为我的问题找到解决方案。

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;

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

  

ERROR 1054(42S22)未知专栏'Schueler.Snummer'中有'   条款“

该列存在,我不知道出了什么问题。

有人能解决吗?

1 个答案:

答案 0 :(得分:0)

你可能想要:

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;