ホームページ >データベース >mysql チュートリアル >DISTINCT は ROW_NUMBER() とどのように連携し、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 サイトの他の関連記事を参照してください。