Frage
Angenommen, ich muss in SQL auf ein mit einem Alias versehenes Feld in der Klausel „haveing“ verweisen, aber der Alias enthält Anführungszeichen. Wie mache ich das?
select (select...) as '005'
group by ...
having '005'>0
Lösung
Ich glaube, Ihnen fehlt eine FROM-Klausel und Sie sollten Backticks anstelle von einfachen Anführungszeichen verwenden:
SELECT (SELECT ...) AS `005`
FROM table1
GROUP BY ...
HAVING `005` > 0
Es wäre hilfreich, wenn Sie Ihre vollständige Anfrage posten würden, da ich hier ein wenig schätze, was Sie tun möchten.
Andere Tipps
Der SQL-92-Standard definiert die Verwendung von doppelten Anführungszeichen für einen Spaltenalias anstelle von einfachen Anführungszeichen.In den meisten Datenbanken sind ungewöhnliche Zeichen nur zulässig, wenn Sie doppelte Anführungszeichen verwenden.
Allerdings unterstützen nicht alle Datenbanken den Verweis auf einen Spaltenalias (in derselben Abfrage) in der GROUP BY
oder HAVING
Klauseln.Für portable Abfragen empfehle ich nicht, auf einen Spaltenalias in zu verweisen GROUP BY
oder HAVING
Klauseln.Darüber hinaus ist die HAVING
Die Klausel gilt für Aggregate. Das von Ihnen bereitgestellte vereinfachte Beispiel sollte einen Fehler auslösen, da keine Aggregatfunktion vorhanden ist (IE:COUNT, AVG, MIN/MAX usw.) wird auf dem durchgeführt 005
Spaltenalias.
Folgendes funktioniert bei mir unter MySQL 4.1:
SELECT COUNT(*) AS "005"
FROM TABLE t
GROUP BY ...
HAVING `005` > 0