Heim >Datenbank >MySQL-Tutorial >Warum schlägt meine PostgreSQL-DELETE-Abfrage mit „Spalte existiert nicht' fehl, wenn ich IN (Liste) verwende?
In PostgreSQL schlägt die Abfrage
DELETE FROM user_job_titles WHERE id IN ( "c836d018-1d12-4507-a268-a4d80d6d3f54", "d0961a90-7d31-4c4c-9c1b-671115e3d833", "62dda420-6e62-4017-b41d-205c0aa82ead" )
fehl mit ein „Fehler: Spalte [Wert] existiert nicht“-Fehler. Dies liegt daran:
In PostgreSQL werden doppelte Anführungszeichen als Escape-Zeichen verwendet, um auf Tabellen- und Spaltennamen zu verweisen. Bei versehentlicher Verwendung mit Zeichenfolgenliteralen kann es zu einer falschen Syntax kommen. In der angegebenen Abfrage werden die Werte in der IN-Liste in doppelte Anführungszeichen gesetzt, was dazu führt, dass PostgreSQL sie als Spaltennamen und nicht als Zeichenfolgenkonstanten interpretiert.
An Um das Problem zu beheben, schließen Sie die Werte in einfache Anführungszeichen ein:
DELETE FROM user_job_titles WHERE id IN ( 'c836d018-1d12-4507-a268-a4d80d6d3f54', 'd0961a90-7d31-4c4c-9c1b-671115e3d833', '62dda420-6e62-4017-b41d-205c0aa82ead' );
Auf diese Weise interpretiert PostgreSQL die Werte als Zeichenfolgenkonstanten und vergleicht sie korrekt mit der ID-Spalte der Tabelle user_job_titles.
Das obige ist der detaillierte Inhalt vonWarum schlägt meine PostgreSQL-DELETE-Abfrage mit „Spalte existiert nicht' fehl, wenn ich IN (Liste) verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!