MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
SQL Server - EXISTSのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
SQL Server - EXISTS
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == 以下の例は、<code>EXISTS</code>句を使用している。<br> <code>WHERE</code>句の後に<code>EXISTS</code>句があり、<code>EXISTS</code>句内でSQL文を記述する。<br> <br> これは、副問い合わせである。<br> <br> <syntaxhighlight lang="sql"> SELECT * FROM <テーブル名> WHERE EXISTS (SELECT * FROM <テーブル名>); </syntaxhighlight> <br> この時、外部クエリにあるテーブルと<code>EXISTS</code>句内のSQL文にあるテーブルを結合するかどうかで抽出されるデータが異なる。<br> * 結合する場合 (相関副問い合わせ) *: 外部クエリを実行した後、<code>EXISTS</code>句内のSQL文を実行する。 *: <br> * 結合しない場合 (存在判定) *: <code>EXISTS</code>句内のSQL文 (内部クエリ) で値が存在する時、外部クエリが実行される。 *: <code>EXISTS</code>句内のSQL文 (内部クエリ) で値が存在しない時、外部クエリは実行されない。 <br><br> == テーブルを結合する場合 (相関副問い合わせ) == 下表に示す2つのテーブルがある。<br> <center> {| class="wikitable" style="background-color:#fefefe;" |+ T_Employeeテーブル |- ! style="background-color:#66CCFF;" | ID ! style="background-color:#66CCFF;" | Name ! style="background-color:#66CCFF;" | Alpha |- | 1 || 鈴木 || Suzuki |- | 2 || 田中 || Tanaka |- | 3 || 佐藤 || Sato |} </center> <br> <center> {| class="wikitable" style="background-color:#fefefe;" |+ T_Salesテーブル |- ! style="background-color:#66CCFF;" | ID ! style="background-color:#66CCFF;" | Name |- | 2 || Orange |- | 4 || Apple |} </center> <br> 以下の例では、<code>EXISTS</code>句内において、T_SalesテーブルのIDとT_EmployeeテーブルのIDで結合している。<br> <syntaxhighlight lang="sql"> SELECT * FROM T_Employee WHERE Alpha LIKE '%a%' AND EXISTS ( SELECT 1 FROM T_Sales WHERE T_Sales.ID = T_Employee.ID ); </syntaxhighlight> <br> 1行目は、T_Employeeテーブルのレコードを抽出している。<br> 6行目は、T_SalesテーブルのIDとT_EmployeeテーブルのIDで結合している。<br> <br> <code>EXISTS</code>句内の副問い合わせに、外側のSQL文(主問い合わせ)のT_Employee.IDカラムを使用している。(SQL文は相関副問合せになる)<br> この場合、外側のSQL文(主問い合わせ)を実行した後、そこで抽出したレコードで<code>EXISTS</code>句内(副問い合わせ)のSQL文を実行する。<br> <br> 5行目の<code>SELECT</code>文の後の項目(1)は使用されない。(任意の値を設定できる)<br> <br> 結果は、以下の通りである。<br> ID Name Alpha 2 田中 Tanaka <br> まず最初に、外側のSQL文が実行されてT_EmployeeテーブルのAlphaカラムにaがある2行が抽出される。<br> 次に、T_EmployeeテーブルとT_Salesテーブルの両方に存在するIDカラムが2のT_Employeeテーブルのレコードが抽出される。<br> <br><br> == テーブルを結合しない場合 (存在判定) == 下表に示す2つのテーブルがある。<br> <center> {| class="wikitable" style="background-color:#fefefe;" |+ T_Employeeテーブル |- ! style="background-color:#66CCFF;" | ID ! style="background-color:#66CCFF;" | Name ! style="background-color:#66CCFF;" | Alpha |- | 1 || 鈴木 || Suzuki |- | 2 || 田中 || Tanaka |- | 3 || 佐藤 || Sato |} </center> <br> <center> {| class="wikitable" style="background-color:#fefefe;" |+ T_Salesテーブル |- ! style="background-color:#66CCFF;" | ID ! style="background-color:#66CCFF;" | Name |- | 2 || Orange |- | 4 || Apple |} </center> <br> <code>EXISTS</code>句内で、上記のT_SalesテーブルでIDカラムを指定する。<br> <syntaxhighlight lang="sql"> SELECT * FROM T_Employee WHERE EXISTS ( SELECT * FROM T_Sales WHERE T_Sales.ID = 2 ) AND Alpha = 'sato'; </syntaxhighlight> <br> 1行目は、T_Employeeテーブルのレコードを抽出している。<br> 2~6行目は、<code>EXISTS</code>句のSQL文で、条件でT_SalesテーブルのIDカラムに2を指定している。<br> この時、<code>EXISTS</code>句内のSQL文を実行した後、レコードが存在する場合は、外側のSQL文が実行される。<br> <br> 結果は、以下の通りである。<br> ID Name Alpha 3 佐藤 Sato <br> T_SalesテーブルのIDカラムにおいて、2は存在するため、外側のSQL文を実行した後、T_EmployeeテーブルのAlphaカラムのSatoのレコードが抽出される。<br> 例えば、T_SalesテーブルのIDカラムにおいて、5を指定した場合は、外側のSQL文は実行されずにレコードは1件も抽出されない。<br> <br><br> {{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux |image=/resources/assets/MochiuLogo_Single_Blue.png }} __FORCETOC__ [[カテゴリ:SQL_Server]]
SQL Server - EXISTS
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse