」、「in と not in」とほぼ同じです。in は、~に含まれることを意味します。"/> 」、「in と not in」とほぼ同じです。in は、~に含まれることを意味します。">
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:
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) を参照してください。