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>
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>
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>
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>
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!