Heim >Datenbank >MySQL-Tutorial >Wie vermeide ich den ORA-00904-Fehler bei der Verwendung eines Alias in einer SQL-WHERE-Klausel?
Verwenden Sie Aliase in WHERE-Klauseln
Bei einer SQL-Abfrage zur Anzeige der Anzahl der Zeilen in einer Tabelle, die nicht kürzlich aktualisiert wurden, ist aufgrund der Verwendung eines Alias in der WHERE-Klausel ein ORA-00904-Fehler aufgetreten. Benutzer suchen nach einer Lösung für dieses Problem, ohne die komplexe DECODE-Funktion in der WHERE-Klausel zu wiederholen.
Die direkte Verwendung von Aliasen in der WHERE-Klausel ist nicht möglich, da WHERE vor SELECT ausgeführt wird, was der letzte Schritt der Abfrageausführung ist. Sie können jedoch eine Unterabfrage als Problemumgehung verwenden:
<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>
Dieser Unterabfrageansatz ermöglicht effektiv das Filtern basierend auf Alias-Ausdrücken, ohne dass der anfängliche Fehler auftritt.
Das obige ist der detaillierte Inhalt vonWie vermeide ich den ORA-00904-Fehler bei der Verwendung eines Alias in einer SQL-WHERE-Klausel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!