Maison > base de données > tutoriel mysql > Comment résoudre ORA-00918 : « colonne définie de manière ambiguë » dans les requêtes SQL SELECT * ?

Comment résoudre ORA-00918 : « colonne définie de manière ambiguë » dans les requêtes SQL SELECT * ?

DDD
Libérer: 2025-01-13 21:24:47
original
103 Les gens l'ont consulté

How to Resolve ORA-00918:

*Erreur Oracle ORA-00918 : résolution des colonnes ambiguës dans les instructions SELECT **

L'exécution d'une requête SELECT * impliquant plusieurs tables avec des colonnes portant le même nom entraîne souvent l'erreur ORA-00918 : "colonne définie de manière ambiguë". Cette ambiguïté survient car la base de données ne peut pas déterminer quelle colonne de table récupérer lorsque plusieurs tables partagent un nom de colonne.

Considérez cet exemple :

<code class="language-sql">SELECT *
FROM
  (SELECT DISTINCT(coaches.id),
    people.*,
    users.*,
    coaches.*
  FROM "COACHES"
  INNER JOIN people ON people.id = coaches.person_id
  INNER JOIN users ON coaches.person_id = users.person_id
  LEFT OUTER JOIN organizations_users ON organizations_users.user_id = users.id
) WHERE rownum <p>To correct this, replace the ambiguous `SELECT *` with a specific column selection.  For instance:</p><p>Instead of selecting all columns (`SELECT *`), explicitly list the desired columns and use aliases to resolve ambiguity:</p>SELECT
  coaches.id AS COACHES_ID,
  people.name,
  users.email,
  coaches.team
FROM ...  -- Rest of your query remains the same

This approach assigns unique aliases (e.g., `COACHES_ID`) to each selected column, eliminating the ambiguity.  Alternatively, omit duplicate columns entirely, selecting only the necessary data.

Best practice dictates avoiding `SELECT *` in production SQL.  Explicitly defining columns enhances code clarity, maintainability, and reduces the risk of errors caused by ambiguous column names.</code>
Copier après la connexion

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal