ホームページ > データベース > mysql チュートリアル > SQL Server 2008 で行番号に基づいて 2 つのテーブルを結合するにはどうすればよいですか?

SQL Server 2008 で行番号に基づいて 2 つのテーブルを結合するにはどうすればよいですか?

DDD
リリース: 2024-12-25 00:44:10
オリジナル
197 人が閲覧しました

How Can I Join Two Tables Based on Their Row Numbers in SQL Server 2008?

行番号でのテーブルの結合

問題文:

共通の特徴を持つ 2 つのテーブルがあります: 行番号。目標は、その属性に対して内部結合を実行し、特定のデータを取得することです。

特定のシナリオ:

次のデータを含む 2 つのテーブル A と B について考えます。

テーブルA

RowA
RowB
RowC
RowD

テーブル B

Row4
Row3
Row2
Row1

必要な出力:

  • RowA Row1
  • 行B Row2
  • RowC Row3
  • RowD Row4

解決策:

行番号で目的の内部結合を実現するには、 SQL Server 2008 では 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
ログイン後にコピー

説明:

  • ROW_NUMBER() 関数は、指定された ORDER BY に基づいて、テーブル内の各行にシーケンス番号を割り当てます。
  • 結合条件 A.row_num = B.row_num は、同一の行を持つ行と一致します。
  • ORDER BY A.val, B.val 句により、出力行がテーブル A とテーブル B の順番に並べられるようになります。
  • >

代替シナリオ:

に行を表示する必要がある場合ORDER BY 句のない個々のテーブルでの順序と同じ順序にするには、クエリを次のように変更します。

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 句が削除され、元の行シーケンスが保持されます。

以上がSQL Server 2008 で行番号に基づいて 2 つのテーブルを結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート