您好,登錄后才能下訂單哦!
這篇文章主要講解了“mysql子查詢怎么使用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“mysql子查詢怎么使用”吧!
出現在其他語句中的 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
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)
上述這兩條sql , mysql是不允許我們這樣去執行的 :
mysql的底層機制使得我們在操作此表的時候是不能去改變此表結構的
也就是說,子查詢不能查詢當前正在操作的表
where 后面 : 可跟標量子查詢, 列子查詢, 行子查詢
-- 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子查詢怎么使用”的內容了,經過本文的學習后,相信大家對mysql子查詢怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。