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

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

DDD
リリース: 2024-12-26 02:29:10
オリジナル
713 人が閲覧しました

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

SQL Server 2008 での行番号でのテーブルの結合

SQL Server 2008 で行番号で内部結合を実行するには、ROW_NUMBER()機能が発揮されます。次の例を考えてみましょう。

テーブル:

  • テーブル A: 行が含まれています: RowA、RowB、RowC、RowD
  • テーブル B:含まれる行: Row4、Row3、Row2、Row1

必要な出力:

  • RowA Row1
  • RowB Row2
  • 行C Row3
  • RowD Row4

Order By 句を使用したソリューション:

行番号に基づいてテーブルを結合するには、ROW_NUMBER( ) ORDER BY を使用した関数句:

select A.val,B.val
from(
    SELECT val,row_number() over (order by val) as row_num
    FROM A)A
join
    (SELECT val,row_number() over (order by val) as row_num
    FROM B)B
on  A.row_num=B.row_num
ORDER BY A.val,B.val
ログイン後にコピー

出力:

このクエリは目的の出力を生成します:

  • RowA Row1
  • 行B 行2
  • 行C Row3
  • RowD Row4

Order By 句を使用しないソリューション:

order by 句がない場合は、 ROW_NUMBER() 関数を使用した行番号でも、値は任意の順序で並べ替えられます。出力の行は、元のテーブルと同じ順序で出力されます:

select A.val,B.val
from(
    SELECT val,row_number() over (order by (select null)) as row_num
    FROM A)A
join
    (SELECT val,row_number() over (order by (select null)) as row_num
    FROM B)B
on  A.row_num=B.row_num
ORDER BY A.val,B.val
ログイン後にコピー

出力:

もう一度、このクエリは次のように生成します。目的の出力ですが、行の順序が異なる場合があります:

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

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

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