Postgres : "where in (list)" - Référence de colonne non valide
Dans SQL Server, la requête suivante supprimerait avec succès les lignes du table user_job_titles basée sur une liste d'ID :
DELETE FROM user_job_titles WHERE id IN ( "c836d018-1d12-4507-a268-a4d80d6d3f54", "d0961a90-7d31-4c4c-9c1b-671115e3d833", "62dda420-6e62-4017-b41d-205c0aa82ead" )
Cependant, lorsque vous tentez d'exécuter cette requête dans Postgres, une erreur se produit :
ERROR: column "c836d018-1d12-4507-a268-a4d80d6d3f54" does not exist
Cause :
Le problème réside dans l'utilisation de guillemets doubles autour des valeurs d'ID dans la clause IN. Dans Postgres, les guillemets doubles sont réservés comme caractères d'échappement pour les noms de tables et de colonnes. En les utilisant autour des identifiants, Postgres les interprète comme des références à des colonnes inexistantes, ce qui entraîne l'erreur.
Solution :
Pour résoudre ce problème, remplacez le guillemets doubles avec guillemets simples :
DELETE FROM user_job_titles WHERE id IN ('c836d018-1d12-4507-a268-a4d80d6d3f54', 'd0961a90-7d31-4c4c-9c1b-671115e3d833', '62dda420-6e62-4017-b41d-205c0aa82ead' );
En utilisant des guillemets simples, les identifiants sont interprétés comme des constantes de chaîne, permettant à la clause IN de fonctionner correctement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!