SqlServer系列笔记——子查询
admin
2023-06-03 20:41:18
0

子查询意思:

将一个查询语句做为一个结果集供其他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适合于外表小而内表大的情况。


相关内容

热门资讯

高景太阳能申请背接触电池前板专... 国家知识产权局信息显示,四川高景太阳能科技有限公司申请一项名为“背接触电池前板、其制备方法及光伏电池...
宿迁市政府领导专题调研江苏省宿... 8月6日,宿迁市副市长陈伟赴江苏省宿迁环境监测中心,专题调研“人工智能+监测”工作开展情况。宿迁市生...
科技改变生活:普通人如何抓住A... 听着, 科技这个词给人的感觉那可是相当的高大上, 就好像它仅仅是属于实验室里头的科学家或者硅谷的那些...
鼓励领导干部带头休假之后又撤回... 近日,河南省委组织部、省人力资源社会保障厅、省商务厅、省文化和旅游厅、省政府国资委、省总工会近日联合...
耗资4亿美元,特朗普的白宫宴会... 据路透社8月7日报道,美国一家联邦上诉法院于本周五下达指令,要求特朗普政府停止在已拆除的白宫东翼旧址...
胡锡进:新西兰外长像只疯狗,竟... 新西兰这几年出了一个对华非常恶毒的外交部长,他叫温斯顿·彼得斯,81岁。他给中新关系带来了与前些年截...
霍尔木兹协议将近达成,美伊正在... 关于霍尔木兹局势有哪些最新消息?凤凰卫视驻伊朗记者李睿从德黑兰发回报道:伊朗与阿曼就霍尔木兹海峡的协...
“新婚前夜输光3000亿”,硅... 文|张雪莹美国加利福尼亚州滨海小镇卡梅尔,终年海雾缭绕的松林海岸间,藏着众多精品艺廊与隐世豪宅,向来...
告别“玩具”阶段,视频生成大模... 封面新闻记者 欧阳宏宇 阿里巴巴视频生成大模型Wan 3.0开启公测 8月6日,阿里巴巴视频生成大...
视频丨台风“白海豚”逼近 华东... 受台风“白海豚”影响。今天(8月7日)8时浙江宁波和舟山两地海事部门将沿海防台应急响应提升至二级。