首頁 > 資料庫 > mysql教程 > 在 SQL WHERE 子句中使用別名時如何避免 ORA-00904 錯誤?

在 SQL WHERE 子句中使用別名時如何避免 ORA-00904 錯誤?

Barbara Streisand
發布: 2025-01-19 15:22:39
原創
743 人瀏覽過

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

在 WHERE 子句中使用別名

問題

一個旨在顯示表中未被最近更新的行數的 SQL 查詢,由於在 WHERE 子句中使用了別名而遇到 ORA-00904 錯誤。使用者尋求解決此問題的方法,而無需在 WHERE 子句中重複複雜的 DECODE 函數。

解決方法

直接在 WHERE 子句中使用別名是不可行的,因為 WHERE 在 SELECT 之前執行,而 SELECT 是查詢執行的最後一步。但是,可以使用子查詢作為變通方法:

<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>
登入後複製

這種子查詢方法有效地允許根據別名表達式進行過濾,而不會遇到最初的錯誤。

以上是在 SQL WHERE 子句中使用別名時如何避免 ORA-00904 錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板