SQL Server の行番号で内部結合を実行する方法
SQL Server プログラミングの領域では、どのように実行するかという問題が発生します。行番号の内部結合が頻繁に発生します。この記事では、このトピックについて詳しく説明し、望ましい結果を達成するためのソリューションを提供します。
この課題を説明するために、それぞれ上から下に並べられた値のリストが含まれる 2 つのテーブル A と B を考えてみましょう。
目的は、2 つのテーブルで内部結合を実行し、行番号に基づいて行を照合することです。デフォルトでは、SQL Server は行番号でテーブルを結合するネイティブな方法を提供しません。ただし、ROW_NUMBER() 関数を使用すると、各テーブルの各行に一意の行番号を割り当てる仮想列を作成できます。
SQL Server 2008 で行番号に対して内部結合を実行するには、以下を使用できます。次の手順:
-- Create a virtual column with row numbers for Table A SELECT val, ROW_NUMBER() OVER (ORDER BY val) AS row_num FROM A -- Create a virtual column with row numbers for Table B SELECT val, ROW_NUMBER() OVER (ORDER BY val) AS row_num FROM B -- Join the two tables on the row number virtual columns SELECT A.val, B.val FROM ( SELECT val, row_num FROM A ) AS A INNER JOIN ( SELECT val, row_num FROM B ) AS B ON A.row_num = B.row_num ORDER BY A.val, B.val
このクエリは次の出力を返します:
行番号を一致させることで、2 つのテーブルが正常に内部結合されました。
特定の order-by 要件がない場合は、次のようにすることもできます。テーブルを明示的に順序付けしなくても同じ結果が得られます:
-- Create a virtual column with row numbers for Table A SELECT val, ROW_NUMBER() OVER () AS row_num FROM A -- Create a virtual column with row numbers for Table B SELECT val, ROW_NUMBER() OVER () AS row_num FROM B -- Join the two tables on the row number virtual columns SELECT A.val, B.val FROM ( SELECT val, row_num FROM A ) AS A INNER JOIN ( SELECT val, row_num FROM B ) AS B ON A.row_num = B.row_num ORDER BY A.row_num
このクエリは、出てくる順序で行を返します:
以上がSQL Server で行番号に基づいて内部結合を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。