mysql詳細分析講解子查詢的使用
出現(xiàn)在其他語句中的 select 語句,稱為子查詢或內(nèi)查詢;外部的查詢語句,稱為主查詢或 外查詢 .
-- 子查詢 -- 查詢的條件來自于另一查詢的結(jié)果 SELECT * FROM t_user WHERE number=(SELECT number FROM t_user WHERE NAME='張三')
當然子查詢也有類型,分為以下幾種 :
- 標量子查詢(結(jié)果集只有一行一列)
- 列子查詢(結(jié)果集只有一列多行)
- 行子查詢(結(jié)果集有一行多列)(較少)
- 表子查詢(結(jié)果集一般為多行多列)
這里我們以新建t_user表為例
需要注意的是 : 這里的分類是根據(jù)內(nèi)嵌子查詢的結(jié)果來分的 例如上述的sql語句就是標量子查詢
子查詢結(jié)果只有一行一列
接著我們根據(jù)子查詢在sql語句中出現(xiàn)的位置來討論 :
select后面:僅僅支持標量子查詢
-- select語句后面,將t1查詢出的結(jié)果作為子查詢的條件 SELECT t1.number, (SELECT NAME FROM t_user t2 WHERE t1.name = t2.name) FROM t_user t1
查詢結(jié)果 :
insert into , update和 delete后面 :
insert into用來為表中插入數(shù)據(jù) , 所以后面是可以跟列子查詢和表子查詢的
-- 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是不允許我們這樣去執(zhí)行的 :
mysql的底層機制使得我們在操作此表的時候是不能去改變此表結(jié)構(gòu)的
也就是說,子查詢不能查詢當前正在操作的表
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 后面 : 可跟表子查詢
表字查詢的結(jié)果是多行多列, 也就是一個表
-- 表子查詢 SELECT t.age FROM (SELECT age,weight FROM t_user)t
結(jié)果 :
到此這篇關于mysql詳細分析講解子查詢的使用的文章就介紹到這了,更多相關mysql子查詢內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
MySQL 隨機函數(shù)獲取數(shù)據(jù)速度和效率分析
最近做項目,需要做一個從mysql數(shù)據(jù)庫中隨機取幾條數(shù)據(jù)出來??偹苤?,order by rand 會死人的。。因為本人對大數(shù)據(jù)量方面的只是了解的很少,無解,去找百度老師。。搜索結(jié)果千篇一律。特發(fā)到這里來,供大家學習,需要的朋友可以參考下2016-11-11mysql 5.7.21解壓版本安裝 Navicat數(shù)據(jù)庫操作工具安裝
這篇文章主要為大家詳細介紹了mysql 5.7.21解壓版本安裝,Navicat數(shù)據(jù)庫操作工具安裝,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-02-02Ubuntu15下mysql5.6.25不支持中文的解決辦法
Ubuntu15下mysql5.6.25出現(xiàn)亂碼,不支持中文,該問題如何解決呢?下面看看小編是怎么解決此問題的,需要的朋友可以參考下2015-09-09