ホームページ > データベース > mysql チュートリアル > WHERE 句で ROW_NUMBER() を使用できないのはなぜですか?

WHERE 句で ROW_NUMBER() を使用できないのはなぜですか?

Linda Hamilton
リリース: 2024-12-16 18:37:11
オリジナル
747 人が閲覧しました

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

WHERE 句の ROW_NUMBER() 関数の使用中にエラーが発生しました

WHERE 句内での 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

このエラーを解決するには、ウィンドウ化されたテーブルをカプセル化する Common Table Expression (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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート