MochiuWiki : SUSE, EC, PCB
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
テーブルの集合のソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
テーブルの集合
📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは
2026年9月に閉鎖
いたします。
移転先は
https://mochiu.net/index.php?title=テーブルの集合
です。
新しい記事は移転先で追加しております。
(旧サイトでは記事を追加しておりません)
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、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