千家信息网

SqlServer系列笔记——子查询

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,子查询意思:将一个查询语句做为一个结果集供其他SQL语句使用,就像使用普通的表一样,被当作结果集的查询语句被称为子查询所有可以使用表的地方几乎都可以使用子查询来代替。关键子 INexists Not
千家信息网最后更新 2026年11月02日SqlServer系列笔记——子查询

子查询意思:

将一个查询语句做为一个结果集供其他SQL语句使用,就像使用普通的表一样,

被当作结果集的查询语句被称为子查询

所有可以使用表的地方几乎都可以使用子查询来代替。

关键子 IN

exists Not Exists 子查询返回true 或 false

SELECT * FROM(SELECT * FROM T2 where FAge<30)


子查询和连接查询的比较

有些问题使用子查询解决会更简单,有些问题使用连接查询可以变得简单,

因此要根据实际情况进行选择。

当需要频繁地计算统计函数的值并将其作为外部查询的条件时,

应该使用子查询。

单值做为子查询:SELECT 1 AS f1,2,(SELECT MIN(FYearPublished) FROM T_Book),(SELECT MAX(FYearPublished) FROM T_Book) AS f4


只有返回且仅返回一行、一列数据的子查询才能当成单值子查询。

下面的是错误的:


SELECT * FROM T_ReaderFavorite WHERE FCategoryId=(SELECT FId FROM T_Category WHERE FName='Story')

如果子查询是多行单列的子查询,这样的子查询的结果集其实是一个集合。


SELECT * FROM T_Reader

WHERE FYearOfJoin IN

(

select FYearPublished FROM T_Book

)


用 in实现select * from Person p where p.PersonID in(select PersonID from Person where LastName like 'A%')

用exists 实现

select * from Person p where exists (select PersonID from Person where LastName like 'A%' and Person.PersonID=p.PersonID )

EXISTS与IN的使用效率的问题,通常情况下采用exists要比in效率高,因为IN不走索引,但要看实际情况具体使用:

IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。


查询 情况 结果 语句 问题 外表 实际 效率 普通 频繁 一行 关键 函数 只有 地方 意思 数据 条件 果子 索引 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 新华互联网科技 互联网扶贫科技 广州互联网科技公司 有马互联网科技 互联网 的科技创新 盛创互联网科技有限公司 科技与互联网的利与弊 互联网校园科技培训 成都互联网科技公司工作好不好 如何创新互联网科技 工业互联网等科技实现智能化赋能 中和天地互联网科技有限公司 区块链结合互联网科技 沐思想互联网科技有限公司 新氧科技和美国互联网有关系吗 互联网科技平台产品运营 广州智享互联网科技 绵阳真晨互联网科技有限公司 杭州融税互联网科技有限公司 优雇互联网科技有限公司 哈尔滨大商圈互联网科技有限公司 互联网 科技 福州新华互联网科技学校 知乎 互联网校园科技培训 互联网科技革命什么开始 和信科技工业互联网 想开互联网科技公司怎么样 徐州市互联网科技有限公司 互联网安防科技感 瑞安市蟠桃会互联网科技有限公司
0