SQL Server の行番号での内部結合
目的: 行を使用して 2 つのテーブルで内部結合を実行します。
シナリオ:
次のデータを持つ 2 つのテーブル A と B について考えます:
Table A | Table B |
---|---|
RowA | Row4 |
RowB | Row3 |
RowC | Row2 |
RowD | Row1 |
目標は、行番号に基づいてテーブルを検索し、次の情報を取得します。出力:
Table A | Table B |
---|---|
RowA | Row1 |
RowB | Row2 |
RowC | Row3 |
RowD | Row4 |
解決策:
行番号で内部結合を実行するには、次のように ROW_NUMBER() 関数を使用します。
SELECT A.val, B.val FROM ( SELECT val, ROW_NUMBER() OVER (ORDER BY val) AS row_num FROM A ) AS A JOIN ( SELECT val, ROW_NUMBER() OVER (ORDER BY val) AS row_num FROM B ) AS B ON A.row_num = B.row_num ORDER BY A.val, B.val;
このクエリは、入力テーブル (A および B) ごとに一時テーブルを作成し、val 列に基づいて各行に行番号を割り当てます。次にテーブルは row_num 列を使用して結合され、結果は両方のテーブルの val 列によって並べ替えられます。
追加の考慮事項:
SQL フィドル デモ:
[SQL フィドル デモ](https://www.sqlfiddle.com/#!18/69540/2) )
以上が行番号に基づいて 2 つの SQL Server テーブルを内部結合する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。