首頁 > 資料庫 > mysql教程 > 為什麼不能在 WHERE 子句中使用 ROW_NUMBER()?

為什麼不能在 WHERE 子句中使用 ROW_NUMBER()?

Linda Hamilton
發布: 2024-12-16 18:37:11
原創
745 人瀏覽過

Why Can't I Use ROW_NUMBER() in a WHERE Clause?

在WHERE 子句中使用ROW_NUMBER() 函數時遇到錯誤

出現了有關ROWHERE 中ROW_NUMBER() 函數使用的問題條款。一位使用者在嘗試以下查詢時遇到錯誤,指出「視窗函數只能出現在SELECT 或ORDER BY 子句中」:

SELECT employee_id
FROM v_employee
WHERE ROW_NUMBER() OVER (ORDER BY employee_id) > 0
ORDER BY employee_id
登入後複製

解決方案:使用視窗函數的包裝器CTE

要解決此錯誤,一種常見的技術涉及創建封裝視窗函數計算的公共表表達式(CTE)。透過將原始查詢包裝在 CTE 中,後續查詢可以存取視窗函數的結果並在 WHERE 子句中使用它們。

實現此解決方案的修改後的查詢將如下所示:

WITH MyCte AS (
    select employee_id,
           RowNum = ROW_NUMBER() OVER (ORDER BY employee_id)
    from v_employee
    ORDER BY employee_id
)
SELECT employee_id
FROM MyCte
WHERE RowNum > 0
登入後複製

透過使用此方法,視窗函數的輸出可在WHERE 子句中使用,從而允許用戶根據所需的條件成功過濾結果。

以上是為什麼不能在 WHERE 子句中使用 ROW_NUMBER()?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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