Frage

ich Frage mich, warum dies fehlschlägt

mysql> SELECT Continent C, Name, SurfaceArea
    -> FROM Country
    -> WHERE SurfaceArea = (
    -> SELECT MAX(SurfaceArea)
    -> FROM Country
    -> WHERE Continent = C);
ERROR 1054 (42S22): Unknown column 'C' in 'where clause'

seine eine Antwort zur Verfügung gestellt durch die Zertifizierung guide für ein paar Beispiel-übungen.

btw, für alias, wenn tun ich haben zu verwenden, WIE?isit optional?

War es hilfreich?

Lösung

In Auftrag zu führen eine korrelierte Unterabfrage, müssen Sie einen alias für die äußeren Tabelle.Sie erstellt einen alias für die äußere Tabelle Feld.Werfen Sie einen Blick auf die korrigierte code, der ein alias für die Tabelle (Cou) verwiesen, in der Unterabfrage (beachten Sie, dass das Feld alias nicht erforderlich, so dass ich Sie entfernt.Es gibt keinen Schaden bei wieder hinzufügen, wenn Sie möchten):

SELECT Continent, Name, SurfaceArea
FROM Country Cou
WHERE SurfaceArea = 
(
    SELECT MAX(SurfaceArea)
    FROM Country
    WHERE Continent = Cou.Continent
);

In Bezug auf die Nutzung, WIE, es ist optional.Zum Beispiel in der obigen Abfrage, die Sie schreiben könnten Country AS Cou, es wäre das gleiche.

Andere Tipps

Ich gehe davon aus, es hat etwas zu tun mit Ihnen MySQL-Version sind. Getestet habe ich nur genau die gleiche Abfrage und es erfolgreich ist (syntaxically zumindest). Das ist mit MySQL 5.0.45 .

Wenn die MySQL-Version ist nicht das Problem, könnte man auch versuchen, die Abfrage erneut eingeben. Es mag albern klingen, aber manchmal unprintable Zeichen in der Abfrage verrutschen können während der Eingabe oder Kopieren / Einfügen (Ich denke Kopieren / Einfügen von PDF hier, vor allem, da sie von einem Führer sind).

Und, ja, AS ist optional für Aliase.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top