副問合せとは? わかりやすく解説

副問合せ

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/09/27 04:10 UTC 版)

SELECT (SQL)」の記事における「副問合せ」の解説

副問合せは値が一定でない値に対して問合わせが可能であり、必ず( )で囲む必要があるFROM句WHERE句HAVING句使用可能。FROM句指定されていない別表参照することも可能であり、また、ネストにも制限はない(但し、パフォーマンス低下するおそれがある)。 副問合せに対して単一行を選択した場合比較演算子用いる。この場合複数行が検索されればエラーとなる。もし、複数行を選択した場合は、一般にIN、他にANY(SOME)+比較演算子、ALL+比較演算子、またはEXISTS用いる。いずれの式も頭にNOT付記すれば、否定表現となる。この比較条件記述DBMS環境依存していることが多い。 IN INは、括弧内にいずれかの値が入っている場合限り、真を返す演算子である。たとえば商品商品番号,商品名,…)という表から、商品番号が3と8の商品名抽出するとする。この場合SELECT 商品名 FROM 商品 WHERE 商品番号 = 3 OR 商品番号 = 8と記述してもよいが、INを用いることで SELECT 商品名 FROM 商品 WHERE 商品番号 IN (3,8) と簡潔に表すことができる。これを副問合せに応用することも可能で、たとえば納品伝票番号,行番号,商品番号,納品日,個数,…)という表から一度でも納品され商品表したい場合SELECT 商品名 FROM 商品 WHERE 商品番号 IN (SELECT 商品番号 FROM 納品) とすれば一度でも納品され商品抽出される逆にNOT INとすると納品表に一度納品されていない商品抽出されるEXISTS EXISTSはその値が存在するかを探索する演算子であり、存在する場合は真を返す前述の例をEXISTS記述する場合このようになるSELECT 商品名 FROM 商品 WHERE EXISTS (SELECT * FROM 納品 WHERE 商品.商品番号 = 納品.商品番号) 結果的に、INで記述した場合と同じ結果を示すことになるが、前述の例とは実行順序異なっている。通常、副問合せを先に実行しその結果使って問合せ実行するが、後述例の場合、副問合せ内で副問合せ内にない表(商品表)を参照しているので副問合せを先に実行できないこのように、そのFROM句にない表の列を参照する副問合せを「相関副問合せ」と言いその場合は、主問合せの表の行ごとに副問合せが繰り返し実行される。ただし、その分パフォーマンス低下してしまうため、実用上は前述例のように記述した方がよい。

※この「副問合せ」の解説は、「SELECT (SQL)」の解説の一部です。
「副問合せ」を含む「SELECT (SQL)」の記事については、「SELECT (SQL)」の概要を参照ください。

ウィキペディア小見出し辞書の「副問合せ」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「副問合せ」の関連用語

副問合せのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



副問合せのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのSELECT (SQL) (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS