9.数据库中的子查询
子查詢
在一個(gè) select 語(yǔ)句中,嵌入了另外一個(gè) select 語(yǔ)句,那么被嵌入的 select 語(yǔ)句稱之為子查詢語(yǔ)句
?
主查詢
主要查詢的對(duì)象,第一條 select 語(yǔ)句
?
主查詢和子查詢的關(guān)系
子查詢是嵌入到主查詢中
子查詢是輔助主查詢的,要么充當(dāng)條件,要么充當(dāng)數(shù)據(jù)源
子查詢是可以獨(dú)立存在的語(yǔ)句,是一條完整的 select 語(yǔ)句
?
子查詢分類
標(biāo)量子查詢: 子查詢返回的結(jié)果是一個(gè)數(shù)據(jù)(一行一列)
列子查詢: 返回的結(jié)果是一列(一列多行)
行子查詢: 返回的結(jié)果是一行(一行多列)
表級(jí)子查詢: 返回的結(jié)果是多行多列
?
標(biāo)量子查詢
查詢班級(jí)學(xué)生的平均身高
select * from students whereage > (select avg(age) from students);
列級(jí)子查詢
查詢還有學(xué)生在班的所有班級(jí)名字
select name from pythons whereid in (select cls_id from students);
行級(jí)子查詢
需求: 查找班級(jí)年齡最大,身高最高的學(xué)生
行元素: 將多個(gè)字段合成一個(gè)行元素,在行級(jí)子查詢中會(huì)使用到行元素
select * from students where(height,age) = (select max(height),max(age) from students);
表級(jí)子查詢
查詢學(xué)生與班級(jí)對(duì)應(yīng)的信息
select * from
(select stu.*,pys.name as clsname from students as stu inner join pythons aspys on stu.cls_id = pys.id)
as t1;
說(shuō)明:發(fā)現(xiàn)很多表級(jí)子查詢的語(yǔ)句,都是可以使用連接查詢實(shí)現(xiàn)的,此時(shí)推薦使用連接查詢,因?yàn)檫B接查詢的語(yǔ)句更簡(jiǎn)潔,邏輯更清晰
?
子查詢中特定關(guān)鍵字使用
- in 范圍
格式: 主查詢 where 條件 in (列子查詢)
- any | some 任意一個(gè)
格式: 主查詢 where 列 = any (列子查詢)
在條件查詢的結(jié)果中匹配任意一個(gè)即可,等價(jià)于in
- all
格式: 主查詢 where 列 = all(列子查詢) : 等于里面所有
格式: 朱查詢 where 列 <>all(列子查詢) :不等一其中所有
總結(jié)
以上是生活随笔為你收集整理的9.数据库中的子查询的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Python进阶-函数默认参数,特别是参
- 下一篇: 1.NoSQL与MongoDB简介