SQL で Row_Number を使用して異なる値を持つ行を区別する
SQL の DISTINCT キーワードは、データを取得するときに重複行を排除する上で重要な役割を果たします。ただし、列内の各値の一意の出現を識別する必要がある場合には、これでは不十分な場合があります。ここで Row_Number が登場しますが、DISTINCT との組み合わせは注意が必要です。
問題のクエリは、id 列内の個別の値の行番号を表示しようとします。
SELECT DISTINCT id, ROW_NUMBER() OVER (ORDER BY id) AS RowNum FROM table WHERE fid = 64;
ただし、このクエリの結果は、各一意の値の行番号ではなく、id の個別の値になります。望ましい結果を得るには、DISTINCT の代わりに DENSE_RANK() 関数を使用できます。
SELECT DISTINCT id, DENSE_RANK() OVER (ORDER BY id) AS RowNum FROM table WHERE fid = 64;
DENSE_RANK() は、重複する値にギャップを割り当てる ROW_NUMBER() とは異なり、連続する行番号を個別の値に割り当てます。 DENSE_RANK() と DISTINCT を組み合わせることで、一意の ID 値ごとに行番号を取得し、さらなる分析や処理に必要な情報を提供できます。
以上がDENSE_RANK() を使用して SQL の個別値の行番号を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。