Maison > base de données > tutoriel mysql > Pourquoi mon LEFT JOIN PostgreSQL échoue-t-il avec une erreur « La colonne n'existe pas » ?

Pourquoi mon LEFT JOIN PostgreSQL échoue-t-il avec une erreur « La colonne n'existe pas » ?

Patricia Arquette
Libérer: 2025-01-13 09:08:43
original
306 Les gens l'ont consulté

Why Does My PostgreSQL LEFT JOIN Fail with a

Dépannage des erreurs PostgreSQL LEFT JOIN : respect de la casse et noms de colonnes

L'exécution de requêtes SQL avec LEFT JOIN peut parfois entraîner une erreur frustrante "la colonne... n'existe pas". Cela vient souvent d'incohérences dans la façon dont les noms de colonnes sont référencés.

Cet exemple met en évidence un piège courant : le respect de la casse dans PostgreSQL. La table main_sim contient une colonne de clé étrangère nommée FK_Numbers_id. Alors que la définition de la table (d main_sim) confirme son existence, la requête échoue car la casse du nom de la colonne est incohérente. La requête utilise FK_Numbers_id (majuscule), tandis que la base de données la stocke sous fk_numbers_id (minuscule).

La sensibilité à la casse de PostgreSQL est ici cruciale. Si une table est créée avec des noms de colonnes entre guillemets (comme recommandé dans la documentation), tous les noms de colonnes deviennent strictement sensibles à la casse. Cela signifie que vous devez utiliser la casse exacte – y compris les guillemets doubles – dans vos requêtes.

Solution :

La requête corrigée utilise des guillemets doubles pour spécifier explicitement la casse du nom de la colonne :

<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>
Copier après la connexion

Cette modification garantit que la bonne colonne est référencée, résolvant l'erreur « la colonne n'existe pas » et permettant au LEFT JOIN de s'exécuter avec succès. N'oubliez pas qu'une casse cohérente et précise est essentielle lorsque vous travaillez avec PostgreSQL, en particulier lorsqu'il s'agit d'identifiants entre guillemets doubles.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal