Heim >Datenbank >MySQL-Tutorial >Warum schlägt mein PostgreSQL LEFT JOIN mit der Fehlermeldung „Spalte existiert nicht' fehl?

Warum schlägt mein PostgreSQL LEFT JOIN mit der Fehlermeldung „Spalte existiert nicht' fehl?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-13 09:08:43339Durchsuche

Why Does My PostgreSQL LEFT JOIN Fail with a

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!

Stellungnahme:
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