ホームページ > データベース > mysql チュートリアル > WHERE 句で ROW_NUMBER() を使用するにはどうすればよいですか?

WHERE 句で ROW_NUMBER() を使用するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-17 05:36:24
オリジナル
140 人が閲覧しました

How Can I Use ROW_NUMBER() in a WHERE Clause?

WHERE 句での ROW_NUMBER() 関数の使用: ウィンドウ関数の制限の克服

ROW_NUMBER() などのウィンドウ関数により、強力なデータが可能になります結果セット内の変換。ただし、その使用には特定の制約があり、その 1 つは WHERE 句からの除外です。

ユーザーが遭遇したクエリに示されているように、WHERE 句で ROW_NUMBER() を使用しようとすると、エラー メッセージ: 「ウィンドウ関数は SELECT 句または ORDER BY 句でのみ使用できます。」

この制限に対処するための手法は次のとおりです。元のクエリを Common Table Expression (CTE) でラップし、CTE クエリ内にウィンドウ関数を含めることができるようにする方法を採用します。

このソリューションを実装する方法は次のとおりです。

  1. CTE を作成します: 元のクエリを CTE 内にカプセル化し、エイリアス (例:
  2. CTE に ROW_NUMBER() を含めます: CTE 内に、ROW_NUMBER() 関数と他の必要な列を含めます。
  3. CTE から選択: を利用して、目的の出力を CTE に問い合わせます。 ROW_NUMBER() の結果は 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
ログイン後にコピー

元のクエリを CTE でラップすることにより、ウィンドウ関数 ROW_NUMBER() WHERE 句で利用できるようになり、その値に基づいて結果をフィルタリングできるようになりました。

以上がWHERE 句で ROW_NUMBER() を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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