ホームページ >データベース >mysql チュートリアル >DISTINCT は ROW_NUMBER() とどのように連携し、SQL で一意の行番号を取得するにはどうすればよいですか?

DISTINCT は ROW_NUMBER() とどのように連携し、SQL で一意の行番号を取得するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-26 03:13:09430ブラウズ

How Does DISTINCT Interact with ROW_NUMBER() and How Can I Get Unique Row Numbers in SQL?

DISTINCT キーワードと ROW_NUMBER() 関数について理解する

SQL でデータを操作する場合、多くの場合、一意の行のみを取得することが必要になります。テーブルから。 DISTINCT キーワードは、結果セットから重複行を削除するため、通常はこの目的に使用されます。ただし、ROW_NUMBER() 関数と組み合わせると、DISTINCT キーワードの動作が異なる場合があります。

ROW_NUMBER() 関数と固有値

ROW_NUMBER() 関数は、テーブル内の各行に付けられる一意の連続番号。デフォルトでは、行はテーブル内の位置に基づいて並べられます。ただし、ORDER BY 句を使用して別の並べ替え順序を指定できます。

提供されたクエリでは、ROW_NUMBER() 関数が DISTINCT キーワードと一緒に使用されています。

SELECT DISTINCT id, ROW_NUMBER() OVER (ORDER BY id) AS RowNum
FROM table
WHERE fid = 64

このクエリの目的はid 列の一意の値のすべての行番号を表示します。ただし、行番号は表示されず、個別の値のみが返されます。

DENSE_RANK() 関数を使用した解決策

望ましい結果を達成するには、DENSE_RANK( ROW_NUMBER() の代わりに ) 関数を使用します。 DENSE_RANK() 関数は、行の順序に関係なく、テーブル内の個別の値に一意の連続番号を割り当てます。

DENSE_RANK() を使用した修正されたクエリ:

SELECT DISTINCT id, DENSE_RANK() OVER (ORDER BY id) AS RowNum
FROM table
WHERE fid = 64

このクエリid 列の個別の値を対応する行番号とともに返し、元の要件を満たします。

以上がDISTINCT は ROW_NUMBER() とどのように連携し、SQL で一意の行番号を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。