Heim > Datenbank > MySQL-Tutorial > Warum schlägt meine SQL-Abfrage mit der Fehlermeldung „Spalte existiert nicht' fehl, obwohl die Spalte vorhanden ist?

Warum schlägt meine SQL-Abfrage mit der Fehlermeldung „Spalte existiert nicht' fehl, obwohl die Spalte vorhanden ist?

Linda Hamilton
Freigeben: 2025-01-13 08:11:42
Original
121 Leute haben es durchsucht

Why Does My SQL Query Fail with a

Fehlerbehebung beim SQL-Abfragefehler „Spalte existiert nicht“

Beim Ausführen einer SQL-Abfrage kann der Fehler „Spalte existiert nicht“ auftreten. Dies ist besonders rätselhaft, wenn die Spalte in der Tabellendefinition zu existieren scheint.

Beispielszene

Bedenken Sie die folgende Abfrage:

<code class="language-sql">select sim.id as idsim, 
       num.id as idnum 
from main_sim sim 
  left join main_number num on (FK_Numbers_id=num.id);</code>
Nach dem Login kopieren

Diese Abfrage versucht, Daten aus den beiden Tabellen main_sim und main_number basierend auf der Fremdschlüsselbeziehung FK_Numbers_id abzurufen. Beim Ausführen der Abfrage erhalte ich jedoch die folgende Fehlermeldung:

<code>ERROR:  column "fk_numbers_id" does not exist</code>
Nach dem Login kopieren

Lösung

Nachdem Sie die Tabellendefinition mit dem Befehl d main_sim überprüft haben, werden Sie feststellen, dass die Spalte mit dem Namen FK_Numbers_id vorhanden ist und nicht die in der Abfrage angegebene fk_numbers_id.

<code class="language-sql">dbMobile=# \d main_sim

...
FK_Numbers_id   | integer               | </code>
Nach dem Login kopieren

Erklärung

In diesem Fall wird bei den Spaltennamen die Groß-/Kleinschreibung beachtet, da die Tabellendefinition doppelte Anführungszeichen verwendet. Daher müssen Spaltenverweise in Abfragen auch doppelte Anführungszeichen verwenden, um der genauen Groß-/Kleinschreibung des Spaltennamens zu entsprechen.

Korrigierte Abfrage

Um dieses Problem zu beheben, ändern Sie bitte die Abfrage wie folgt:

<code class="language-sql">select sim.id as idsim, 
       num.id as idnum 
from main_sim sim 
  left join main_number num on ("FK_Numbers_id" = num.id);</code>
Nach dem Login kopieren

Diese korrigierte Abfrage verwendet doppelte Anführungszeichen um die Spaltennamen in der LEFT JOIN-Klausel, um eine korrekte Übereinstimmung mit der Tabellendefinition sicherzustellen. Durch Anpassen der Spaltenverweise an die exakte Groß-/Kleinschreibung der Spaltennamen wird die Abfrage nun erfolgreich ausgeführt.

Das obige ist der detaillierte Inhalt vonWarum schlägt meine SQL-Abfrage mit der Fehlermeldung „Spalte existiert nicht' fehl, obwohl die Spalte vorhanden ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage