MySQL は、スウェーデンの会社 MySQLAB によって開発されたリレーショナル データベース管理システムであり、現在は Oracle の製品です。 MySQL は、Web アプリケーションの観点から見ると、最も人気のあるリレーショナル データベース管理システムの 1 つです。MySQL は、最高の RDBMS (リレーショナル データベース管理システム) アプリケーション ソフトウェアです。
MySQL はバージョン 4.1 からサブクエリ機能をサポートしています。このバージョンより前では、代わりにテーブル クエリを作成するために join を使用できますが、これを作成することは非常に面倒なのでお勧めできません。以下は、mysql サブクエリの一般的な記述方法です:
1.select*fromxxxwherecol=[any|all](select*fromxxxx);
この構文は、キーワードを使用する記述方法とキーワードを使用しない記述方法に分けることができます。キーワードが追加されない場合、
サブクエリ ステートメントは離散値
を返します (値が 1 つであることに注意してください)。クエリ ステートメントはクエリする独自の where 句の条件としてサブクエリ ステートメントの結果を使用します。この構文は次のとおりです。サブクエリの前に any、all、exists およびその他のキーワードを追加するときに使用されます。このとき、サブクエリ ステートメントは一連の離散値を返します。 any は、クエリ
が範囲としてサブクエリによって返された値に基づいており、クエリがこの値の範囲内で実行されることを意味します。これは、理解するのが難しい in キーワードと似ています。全試合か何か。
2.select*fromxxxwherecolin(select*fromxxxx);
この構文は非常に明確です。つまり、クエリ ステートメントの where 句は、サブクエリ ステートメントの結果をスコープとして使用します。以前の構文。
3.selectrow(value1,value2....)=[any](selectcol1,col2..);
このステートメントの実行本質は次のとおりです:
サブクエリステートメントの実行結果とクエリの結果 Setmatching、
一致が見つかった場合は true を返し、それ以外の場合は false を返し、両側の結果セットは離散値のセットになります。
4.select....wherecol=[not]exists(select...);
このステートメントはかなり不十分で、その実行は次のようになります: サブクエリが動作して結果を返すとき、このステートメントのみが実行されますステートメントは結果が存在する回数だけ実行されます。
5.select....from(select....)asnamewhere....
この構文は日常生活ではほとんど使われず、理解するのは簡単ではありません。実際には、サブクエリの実行結果によって新しいテーブルが構築され(このテーブルは派生データテーブル、仮想テーブルです)、それがメイン句のクエリとして使用されます
この構文です。は非常に強力で、一部の複雑なクエリでよく使用されます。
編集者の結論:
サブクエリは非常に便利ですが、制限をサポートしていないため、実行効率が非常に不十分であることが実験によって証明されています。
以上がMySQL サブクエリの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。