Heim >Datenbank >MySQL-Tutorial >Warum schlägt meine PostgreSQL-DELETE-Abfrage mit „Spalte existiert nicht' fehl, wenn ich IN (Liste) verwende?

Warum schlägt meine PostgreSQL-DELETE-Abfrage mit „Spalte existiert nicht' fehl, wenn ich IN (Liste) verwende?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-17 02:59:25266Durchsuche

Why Does My PostgreSQL DELETE Query Fail with

Postgres: Abfragefehler „Spalte existiert nicht“ mit WHERE IN (Liste)

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:

Doppelte Anführungszeichen und Escapezeichen

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.

Lösung: Werte in einfache Anführungszeichen setzen

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!

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