Maison > base de données > tutoriel mysql > Comment éviter l'erreur ORA-00904 lors de l'utilisation d'un alias dans une clause SQL WHERE ?

Comment éviter l'erreur ORA-00904 lors de l'utilisation d'un alias dans une clause SQL WHERE ?

Barbara Streisand
Libérer: 2025-01-19 15:22:39
original
744 Les gens l'ont consulté

How to Avoid ORA-00904 Error When Using an Alias in a SQL WHERE Clause?

Utiliser des alias dans les clauses WHERE

Question

Une requête SQL conçue pour afficher le nombre de lignes d'une table qui n'ont pas été récemment mises à jour a rencontré une erreur ORA-00904 en raison de l'utilisation d'un alias dans la clause WHERE. Les utilisateurs recherchent une solution à ce problème sans répéter la fonction complexe DECODE dans la clause WHERE.

Solution

L'utilisation d'alias directement dans la clause WHERE n'est pas réalisable car WHERE est exécuté avant SELECT, qui est la dernière étape de l'exécution de la requête. Cependant, vous pouvez utiliser une sous-requête comme solution de contournement :

<code class="language-sql">SELECT * FROM
(
  SELECT A.identifier
    , A.name
    , TO_NUMBER(DECODE( A.month_no
      , 1, 200803 
      , 2, 200804 
      , 3, 200805 
      , 4, 200806 
      , 5, 200807 
      , 6, 200808 
      , 7, 200809 
      , 8, 200810 
      , 9, 200811 
      , 10, 200812 
      , 11, 200701 
      , 12, 200702
      , NULL)) as MONTH_NO
    , TO_NUMBER(TO_CHAR(B.last_update_date, 'YYYYMM')) as UPD_DATE
  FROM table_a A
    , table_b B
  WHERE A.identifier = B.identifier
) AS inner_table
WHERE 
  MONTH_NO > UPD_DATE</code>
Copier après la connexion

Cette approche de sous-requête permet effectivement un filtrage basé sur des expressions d'alias sans rencontrer l'erreur initiale.

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