出現在其他語句中的select 語句,稱為子查詢或內查詢;外部的查詢語句,稱為主查詢或外查詢.
-- 子查询 -- 查询的条件来自于另一查询的结果 SELECT * FROM t_user WHERE number=(SELECT number FROM t_user WHERE NAME='张三')
當然子查詢也有類型,分為以下幾種:
標量子查詢(結果集只有一行一列)
列子查詢(結果集只有一列多行)
行子查詢(結果集有一行多列)(較少)
#表子查詢(結果集一般為多行多列)
這裡我們以新建t_user表為例
要注意的是: 這裡的分類是根據內嵌子查詢的結果來分的例如上述的sql語句就是標量子查詢
子查詢結果只有一行一列
接著我們根據子查詢在sql語句中出現的位置來討論:
select後面:僅支援標量子查詢
-- select语句后面,将t1查询出的结果作为子查询的条件 SELECT t1.number, (SELECT NAME FROM t_user t2 WHERE t1.name = t2.name) FROM t_user t1
查詢結果:
insert into , update和delete後面:
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與delete
##上述這兩個sql , mysql是不允許我們這樣去執行的: #mysql的底層機制使得我們在操作此表的時候是不能去改變此表結構的 也就是說,子查詢不能查詢目前正在操作的表where 後面: 可跟標量子查詢, 列子查詢, 行子查詢#UPDATE t_user SET NAME='abc' WHERE number=(SELECT number FROM t_user WHERE weight=110)
DELETE FROM t_user WHERE id=(SELECT id FROM t_user WHERE id=7)
#
-- 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)from 後面: 可跟表子查詢表字查詢的結果是多行多列, 也就是一個表
-- 表子查询 SELECT t.age FROM (SELECT age,weight FROM t_user)t結果:
以上是mysql子查詢怎麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!