他のステートメント内に出現する Select ステートメントはサブクエリまたは内部クエリと呼ばれ、外部クエリ ステートメントはメイン クエリまたは外部クエリと呼ばれます。
-- 子查询 -- 查询的条件来自于另一查询的结果 SELECT * FROM t_user WHERE number=(SELECT number FROM t_user WHERE NAME='张三')
もちろん、サブクエリにもタイプがあり、次のタイプに分類されます。タイプ:
スカラー サブクエリ (結果セットには 1 つの行と 1 つの列のみが含まれます)
column サブクエリ (結果セットには 1 つの列のみが含まれます)
行サブクエリ (結果セットには 1 行と複数の列があります) (less)
テーブル サブクエリ (結果セット通常、複数の行と複数の列があります)
ここでは例として新しい t_user テーブルを取り上げます
注意してください。ここでの分類は、埋め込みサブクエリの結果に基づいています。 たとえば、上記の SQL ステートメントはスカラー サブクエリです。
サブクエリの結果には 1 行と 1 列しかありません
次に、SQL ステートメント内のサブクエリの位置を基準にします。次について説明します。
選択後: スカラー サブクエリのみがサポートされます。
-- select语句后面,将t1查询出的结果作为子查询的条件 SELECT t1.number, (SELECT NAME FROM t_user t2 WHERE t1.name = t2.name) FROM t_user t1
クエリ結果:
##insert into の後、更新および削除: insert into はテーブルにデータを挿入するために使用されるため、その後に列サブクエリとテーブル サブクエリを続けることができます-- insert into 后跟子查询 INSERT INTO t_user(number,NAME,age,birthday,weight,sex,opertime) SELECT number,NAME,age,birthday,weight,sex,NOW() FROM t_user WHERE id=3
UPDATE t_user SET NAME='abc' WHEREnumber=(SELECT number FROM t_user WHEREweight=110)DELETE FROM t_user WHERE id=(SELECT id FROM t_user WHERE id=7)Mysql では、上記の 2 つの SQL をこの方法で実行することはできません:
mysql の基礎となるメカニズムにより、このテーブルを操作できません。このテーブルの構造を変更する 言い換えると、サブクエリは、現在操作されているテーブルをクエリできません。スカラー サブクエリ、列サブクエリ、行サブクエリが続きます
-- where后跟标量子查询 -- 查询体重最大的人信息 SELECT * FROM t_user WHERE weight=(SELECT MAX(weight) FROM t_user) -- where后跟列子查询 -- 查询体重大于或等于130的人信息 SELECT * FROM t_user WHERE weight IN (SELECT weight FROM t_user WHERE weight>=130) -- where后跟行子查询 -- 查询年龄最大,体重最大的人的信息 SELECT * FROM t_user WHERE (age,weight) = (SELECT MAX(age),MAX(weight) FROM t_user)
-- 表子查询 SELECT t.age FROM (SELECT age,weight FROM t_user)t
以上がmysqlサブクエリの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。