Fehlerbehebung bei PostgreSQL LEFT JOIN-Fehlern: Groß-/Kleinschreibung und Spaltennamen
Das Ausführen von SQL-Abfragen mit LEFT JOIN
kann manchmal zu einem frustrierenden Fehler „Spalte ... existiert nicht“ führen. Dies ist häufig auf Inkonsistenzen bei der Referenzierung von Spaltennamen zurückzuführen.
Dieses Beispiel verdeutlicht eine häufige Gefahr: Groß-/Kleinschreibung in PostgreSQL. Die main_sim
-Tabelle enthält eine Fremdschlüsselspalte mit dem Namen FK_Numbers_id
. Während die Tabellendefinition (d main_sim
) ihre Existenz bestätigt, schlägt die Abfrage fehl, da die Groß-/Kleinschreibung des Spaltennamens inkonsistent ist. Die Abfrage verwendet FK_Numbers_id
(Großbuchstaben), während die Datenbank es als fk_numbers_id
(Kleinbuchstaben) speichert.
Die Groß-/Kleinschreibung von PostgreSQL ist hier entscheidend. Wenn eine Tabelle mit Spaltennamen in doppelten Anführungszeichen erstellt wird (wie in der Dokumentation empfohlen), wird bei allen Spaltennamen die Groß-/Kleinschreibung strikt beachtet. Das bedeutet, dass Sie bei Ihren Abfragen die exakte Groß- und Kleinschreibung (einschließlich doppelter Anführungszeichen) verwenden müssen.
Lösung:
Die korrigierte Abfrage verwendet doppelte Anführungszeichen, um die Groß-/Kleinschreibung des Spaltennamens explizit anzugeben:
<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 Änderung stellt sicher, dass auf die richtige Spalte verwiesen wird, behebt den Fehler „Spalte existiert nicht“ und ermöglicht die erfolgreiche Ausführung von LEFT JOIN
. Denken Sie daran, dass bei der Arbeit mit PostgreSQL eine konsistente und präzise Groß-/Kleinschreibung unerlässlich ist, insbesondere beim Umgang mit Bezeichnern in doppelten Anführungszeichen.
Das obige ist der detaillierte Inhalt vonWarum schlägt mein PostgreSQL LEFT JOIN mit der Fehlermeldung „Spalte existiert nicht' fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!