


MySQL WHERE-Klausel lässt keine Spaltenaliase zu: Fehler erklärt
Stößt du auf einen MySQL-Abfragefehler wie #1054 - Unknown column 'guaranteed_postcode' in 'IN/ALL/ANY subquery'
? Dies geschieht normalerweise, wenn Sie versuchen, einen Spaltenalias (wie guaranteed_postcode
im Beispiel unten) innerhalb der WHERE
-Klausel zu verwenden.
Hier ist die problematische Abfrage:
SELECT `users`.`first_name`, `users`.`last_name`, `users`.`email`, SUBSTRING(`locations`.`raw`,-6,4) AS `guaranteed_postcode` FROM `users` LEFT OUTER JOIN `locations` ON `users`.`id` = `locations`.`user_id` WHERE `guaranteed_postcode` NOT IN ( SELECT `postcode` FROM `postcodes` WHERE `region` IN ('australia') )
Die Grundursache? Die WHERE
-Klausel von MySQL verarbeitet vor der SELECT
-Klausel, in der Aliase definiert werden. Daher wird der Alias guaranteed_postcode
während der Ausführung der WHERE
-Klausel noch nicht erkannt.
Klarstellung der MySQL-Dokumentation:
In der MySQL-Dokumentation heißt es eindeutig, dass Spaltenaliase in WHERE
-Klauseln nicht zulässig sind. Dies ist eine Einschränkung, die sich aus der Reihenfolge der Abfrageausführung ergibt.
Lösung: Unterabfrage oder HAVING-Klausel
Um dieses Problem zu beheben, haben Sie zwei Hauptoptionen:
-
Verschachtelte Unterabfrage: Betten Sie die Funktion
SUBSTRING
direkt in die Unterabfrage derWHERE
-Klausel ein:
SELECT `users`.`first_name`, `users`.`last_name`, `users`.`email`, SUBSTRING(`locations`.`raw`,-6,4) AS `guaranteed_postcode` FROM `users` LEFT OUTER JOIN `locations` ON `users`.`id` = `locations`.`user_id` WHERE SUBSTRING(`locations`.`raw`,-6,4) NOT IN ( SELECT `postcode` FROM `postcodes` WHERE `region` IN ('australia') )
-
HAVING-Klausel (weniger effizient): Obwohl möglich, ist die Verwendung von
HAVING
für dieses Szenario im Allgemeinen weniger effizient.HAVING
ist für die Filterung nach der Aggregation konzipiert, nicht für die einfache Zeilenfilterung. Es würde eine Umstrukturierung der Abfrage erfordern. Ausführliche Erläuterungen finden Sie in anderen Ressourcen, in denenWHERE
undHAVING
verglichen werden.
Den richtigen Ansatz wählen:
Für diesen speziellen Fall bietet die verschachtelte Unterabfrage (Option 1) eine sauberere und effizientere Lösung. Es geht das Problem direkt an, indem es die Aliasberechnung im Rahmen der WHERE
-Klausel anwendet. Vermeiden Sie die Verwendung von HAVING
, es sei denn, Sie führen Aggregationen durch.
Das obige ist der detaillierte Inhalt vonWarum kann ich in einer MySQL-WHERE-Klausel keinen Spaltenalias verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

In dem Artikel werden mithilfe der Änderungstabelle von MySQL Tabellen, einschließlich Hinzufügen/Löschen von Spalten, Umbenennung von Tabellen/Spalten und Ändern der Spaltendatentypen, erläutert.

In Artikel werden die Konfiguration der SSL/TLS -Verschlüsselung für MySQL, einschließlich der Erzeugung und Überprüfung von Zertifikaten, erläutert. Das Hauptproblem ist die Verwendung der Sicherheitsauswirkungen von selbstsignierten Zertifikaten. [Charakterzahl: 159]

In Artikel werden Strategien zum Umgang mit großen Datensätzen in MySQL erörtert, einschließlich Partitionierung, Sharding, Indexierung und Abfrageoptimierung.

In Artikel werden beliebte MySQL -GUI -Tools wie MySQL Workbench und PhpMyAdmin beschrieben, die ihre Funktionen und ihre Eignung für Anfänger und fortgeschrittene Benutzer vergleichen. [159 Charaktere]

In dem Artikel werden in MySQL die Ablagerung von Tabellen mithilfe der Drop -Tabellenerklärung erörtert, wobei Vorsichtsmaßnahmen und Risiken betont werden. Es wird hervorgehoben, dass die Aktion ohne Backups, die Detaillierung von Wiederherstellungsmethoden und potenzielle Produktionsumfeldgefahren irreversibel ist.

In dem Artikel werden in verschiedenen Datenbanken wie PostgreSQL, MySQL und MongoDB Indizes für JSON -Spalten in verschiedenen Datenbanken erstellt, um die Abfrageleistung zu verbessern. Es erläutert die Syntax und die Vorteile der Indizierung spezifischer JSON -Pfade und listet unterstützte Datenbanksysteme auf.

In Artikeln werden ausländische Schlüssel zur Darstellung von Beziehungen in Datenbanken erörtert, die sich auf Best Practices, Datenintegrität und gemeinsame Fallstricke konzentrieren.

Artikel erläutert die Sicherung von MySQL gegen SQL-Injektions- und Brute-Force-Angriffe unter Verwendung vorbereiteter Aussagen, Eingabevalidierung und starken Kennwortrichtlinien (159 Zeichen).


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Dreamweaver CS6
Visuelle Webentwicklungstools

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

Sicherer Prüfungsbrowser
Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

SublimeText3 Englische Version
Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung