Moin T-Rex,
SELECT id AS outer_id, (SELECT COUNT(id) FROM tmp WHERE pruefung IN (7, 8) AND id = outer_id GROUP BY id) AS cnt FROM tmp WHERE cnt >= 2;
Dann hab ich die Fehlermeldung bekommen cnt nicht bekannt. Daraus schließe ich, dass dem MySQL Parser zu dem Zeitpunkt cnt nicht bekannt ist. Ergo wird zu erst die where Bedingung abgearbeitet. Having kommt anscheinend nach where. Richtig?
Grob gesagt: WHERE wird vor der Aggregierungsphase ausgeführt, HAVING erst nach der Aggregierungsphase. HAVING filtert also das Aggregat, WHERE das Resultset.
LG,
CK