Maison > base de données > tutoriel mysql > Pourquoi ma requête SQL échoue-t-elle avec une erreur « La colonne n'existe pas » même si la colonne existe ?

Pourquoi ma requête SQL échoue-t-elle avec une erreur « La colonne n'existe pas » même si la colonne existe ?

Linda Hamilton
Libérer: 2025-01-13 08:11:42
original
121 Les gens l'ont consulté

Why Does My SQL Query Fail with a

Dépannage de l'erreur de requête SQL "la colonne n'existe pas"

Lors de l'exécution d'une requête SQL, vous pouvez rencontrer une erreur « la colonne n'existe pas ». Ceci est particulièrement déroutant lorsque la colonne semble exister dans la définition de la table.

Exemple de scène

Considérez la requête suivante :

<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 requête tente de récupérer les données de deux tables main_sim et main_number en fonction de la relation de clé étrangère FK_Numbers_id. Cependant, lors de l'exécution de la requête, je reçois l'erreur suivante :

<code>ERROR:  column "fk_numbers_id" does not exist</code>
Copier après la connexion

Solution

Après avoir vérifié la définition de la table à l'aide de la commande d main_sim vous remarquerez que la colonne existe, nommée FK_Numbers_id, et non le fk_numbers_id spécifié dans la requête.

<code class="language-sql">dbMobile=# \d main_sim

...
FK_Numbers_id   | integer               | </code>
Copier après la connexion

Explication

Dans ce cas, les noms de colonnes sont sensibles à la casse car la définition de la table utilise des guillemets doubles. Par conséquent, les références de colonnes dans les requêtes doivent également utiliser des guillemets doubles pour correspondre à la casse exacte du nom de colonne.

Requête corrigée

Pour résoudre ce problème, veuillez modifier la requête comme suit :

<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 requête corrigée utilise des guillemets doubles autour des noms de colonnes dans la clause LEFT JOIN, garantissant une correspondance correcte avec la définition de la table. En ajustant les références de colonnes pour qu'elles correspondent à la casse exacte des noms de colonnes, la requête s'exécutera désormais avec succès.

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