MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
テーブルの集合のソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
テーブルの集合
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == SQL Serverでは、複数のSELECT文の結果を、統合(和集合)、重複(積集合)を抽出、差(差集合)を抽出することができる。<br> * 統合(和集合) *: テーブル1とテーブル2の結果をまとめて検索したい時に、UNION句やUNION ALL句を使用する。 * 重複の抽出(積集合) *: テーブル1とテーブル2の両方に重複しているレコードを検索したい時に、INTERSECT句を使用する。<br>(重複レコードの抽出) * 差(差集合) *: テーブル1とテーブル2があり、テーブル1だけに存在するレコードを検索したい時に、EXCEPT句を使用する。<br>(特定テーブルだけに存在するレコードの抽出) <br> <br><br> == サンプルデータ == <center> '''act_baseballテーブル''' {| class="wikitable" |- ! no !! name |- | 15 || 佐藤太郎 |- | 20 || 山田一郎 |- | 44 || 田中花子 |} </center> <br> <center> '''act_soccerテーブル''' {| class="wikitable" |- ! no !! name |- | 8 || 伊藤一 |- | 10 || 加藤和也 |- | 44 || 田中花子 |} </center> <br><br> == UNION句 == 複数のSELECT結果を統合する。<br> 重複レコードは1行にまとめられる。<br> <br> ===== 例 UNION句で2つのテーブルを検索する ===== UNION句を使用することで、別テーブル同士のSELECT文の結果をまとめて表示することができる。<br> 以下の例では、野球部とサッカー部に所属しているメンバーを全てすべて取得する。<br> <br> テーブルは2つだけでなく、複数のテーブルを統合できる。<br> 注意点としては、テーブルのカラムは同じ数であること。<br> <syntaxhighlight lang="sql"> --野球部とサッカー部のメンバー全員を取得する SELECT studentno, name FROM act_baseball UNION SELECT studentno, name FROM act_soccer order by 1; </syntaxhighlight> <br> <center> '''結果''' {| class="wikitable" |- ! no !! name |- | 8 || 伊藤一 |- | 10 || 加藤和也 |- | 15 || 佐藤太郎 |- | 20 || 山田一郎 |- | 44 || 田中花子 |} </center> <br><br> == UNION ALL句 == 複数のSELECT結果を統合する。<br> 重複レコードはそのまま検索される。<br> <br> ===== 例 UNION ALL句で2つのテーブルを検索する ===== UNION ALL句を使用すると、重複レコードも含めて表示することができる。 以下の例では、野球部とサッカー部に所属しているメンバーを全て取得するが、 野球部とサッカー部の両方に所属している"44, 田中花子"が2件取得される。 このように、重複をそのまま取得したい場合はUNION ALL句、重複を排除したい場合はUNION句を使用する。 <syntaxhighlight lang="sql"> --野球部とサッカー部のメンバー全員を取得する SELECT studentno,name FROM act_baseball UNION ALL SELECT studentno,name FROM act_soccer order by 1; </syntaxhighlight> <br> <center> '''結果''' {| class="wikitable" |- ! no !! name |- | 8 || 伊藤一 |- | 10 || 加藤和也 |- | 15 || 佐藤太郎 |- | 20 || 山田一郎 |- | 44 || 田中花子 |- | 44 || 田中花子 |} </center> <br><br> == INTERSECT句 == ===== 例 INTERSECTで2つのテーブルを検索する ===== INTERSECT句を使用することで、別テーブル同士のSELECT文の結果の重複レコードを取得することができる。<br> 以下の例では、野球部とサッカー部の両方に所属しているメンバーを取得する。<br> <br> テーブルは2つだけでなく、INTERSECT句でそれ以上のテーブルの重複レコードを取得できる。<br> 注意点としては、テーブルの列は同じ数でないといけない。<br> <syntaxhighlight lang="sql"> --野球部とサッカー部の両方に所属しているメンバーを取得する SELECT studentno,name FROM act_baseball INTERSECT SELECT studentno,name FROM act_soccer order by 1; </syntaxhighlight> <br> <center> '''結果''' {| class="wikitable" |- ! no !! name |- | 44 || 田中花子 |} </center> <br><br> == EXCEPT句 == ===== 例 EXCEPT句で2つのテーブルの差を検索する ===== EXCEPT句を使用することで、複数テーブル同士のSELECT文の結果の差を取得することができる。<br> 以下の例では、野球部に所属しサッカー部に所属していないメンバー、つまり野球部だけに所属しているメンバーを取得する。<br> <br> EXCEPT句で差を抽出するテーブルは、2つだけでなくそれ以上でも差を取得できる。<br> 注意点としては、テーブルの列は同じ数でないといけない。<br> ここでは、1つ目のSELECT文がstudentnoカラムとnameカラムの2列なので、それ以降のSELECT文も2列である必要がある。<br> <syntaxhighlight lang="sql"> --野球部にだけ所属しサッカー部には所属していないメンバーを取得する SELECT studentno, name FROM act_baseball EXCEPT SELECT studentno, name FROM act_soccer order by 1; </syntaxhighlight> <br> <center> '''結果''' {| class="wikitable" |- ! no !! name |- | 15 || 佐藤太郎 |- | 20 || 山田一郎 |} </center> <br><br> __FORCETOC__ [[カテゴリ:SQL_Server]]
テーブルの集合
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse