よく使われるmysqlの基本操作構文(10)~~サブクエリ【コマンドラインモード】

黄舟
リリース: 2017-03-03 14:22:38
オリジナル
1195 人が閲覧しました

mysqlには複数テーブルの結合クエリを実装するための結合クエリがありますが、結合クエリのパフォーマンスが非常に悪いため、サブクエリが表示されます。

1. 理論的には、サブクエリはクエリ ステートメント内のどこにでも出現できますが、実際のアプリケーションでは、ほとんどの場合、from と where の後に出現します。 from の後に表示されるサブクエリの結果は通常、複数行と複数の列であり、一時テーブルとして機能します。一方、where の後に表示されるサブクエリの結果は、通常、単一の行と単一の列であり、条件として機能します。 where の後のサブクエリは、「=」、「!=」、「>」、「<」などの比較演算子とともに使用されることがよくあります。通常、結果は単一の行と単一の列ですが、場合によっては単一の行と複数の列が使用され、場合によっては複数の行と単一の列が返されます。複数の行と単一の列の場合、多くの場合、in、any、all、exists と組み合わせて使用​​されます:

in and not in:

ここで、 in は後続のサブクエリに含まれるいずれかを表します。結果セット (not in) は、後続の結果セットに含まれない結果セットを意味します。上の図のサブクエリの結果では、返されたpart_idは1、2、4です。したがって、最初のクエリではempのすべてのpart_idが1、2、または4であることがわかり、2番目のクエリでは次のことがわかります。 1 でも 4 でもありません。2 も 4 ではありません。

any:

=any の使用法は in の効果と同じです。>any は、サブクエリの結果セット内のどの値よりも大きい必要があることを意味します。 any は 1 より大きいことのみが必要であり、

all:


>all は、サブクエリの結果セット内のすべてより大きいことを意味します。単純に理解すると、それは最大のものよりも大きいです。

exists :


exists は、後続のサブクエリに結果があるかどうかのみを考慮しますが、後続のサブクエリに結果がある場合、サブクエリの結果が何であるかは考慮しません。 it の値は true、それ以外の結果が見つからない場合は false、存在しない場合はこの状況のちょうど逆で、値があれば false、値が存在しない場合は true になります。それらの値が true の場合、前のクエリの結果が確立され、メイン クエリの結果セットに追加されます。それ以外の場合、それらはメイン クエリの結果セットに追加されません。
上記のクエリでは、クエリステートメントは最初にempのデータをクエリし、次にこのデータのpart_idを社内のpart_idと比較します。同じIDを持つデータが2つある場合、結果が返されます。その後、最終的に 6 個のデータが返されます。2 番目のクエリでも同じ理由が当てはまります。同じ ID を持つ 2 つのデータがない場合、メイン クエリは結果を 1 つだけ返します。

上記は、mysql の共通基本操作構文 (10) ~~ サブクエリ [コマンド ライン モード] の内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) を参照してください。

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