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

SQL Server で行番号に基づいて内部結合を実行するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-20 11:38:10
オリジナル
213 人が閲覧しました

How to Perform an Inner Join Based on Row Numbers in SQL Server?

SQL Server の行番号で内部結合を実行する方法

SQL Server プログラミングの領域では、どのように実行するかという問題が発生します。行番号の内部結合が頻繁に発生します。この記事では、このトピックについて詳しく説明し、望ましい結果を達成するためのソリューションを提供します。

この課題を説明するために、それぞれ上から下に並べられた値のリストが含まれる 2 つのテーブル A と B を考えてみましょう。

  • テーブル A: RowA、RowB、RowC、RowD
  • テーブル B: Row4、Row3、Row2、 Row1

目的は、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
ログイン後にコピー

このクエリは次の出力を返します:

  • RowA Row1
  • RowB Row2
  • RowC Row3
  • RowD Row4

行番号を一致させることで、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
ログイン後にコピー

このクエリは、出てくる順序で行を返します:

  • RowA Row4
  • RowB Row3
  • 行C 行2
  • 行D行 1

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

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