时间:2021-05-02
今天给大家介绍以下SQLServer子查询相关知识,希望对大家能有所帮助!
1、子查询概念介绍
子查询可以嵌套在SELECT、INSERT、UPDATE、DELETE语句或其他子查询语句中的查询,子查询一般作为查询中间结果集角色,子查询也称为内部查询或内部选择,包含子查询的语句称为外部查询或外部选择。根据可用系统内存和查询中其他表达式的复杂程度的不同,嵌套限制也有所不同,一般可以支持嵌套32层。个人建议尽量避免多层嵌套这样SQL语句的可读性和可维护性都会很差。使用表达式的地方一般都可以使用子查询。
2、子查询分类
单值子查询:子查询的返回值属于单个。常见与查询列、单值的查询条件使用。
多值子查询:子查询的返回值多个。常见in、exists等筛选语句使用。
3、子查询的使用场景
3.1 选择列表中使用子查询
选择列表中使用子查询作为查询结果一列值出现的。该情况下调用子查询返回的只能是单值。只能是单值子查询。
3.2 作为查询条件
4、子查询和连接查询的关系
很多包含子查询的SQL语句都可以改成连接查询的形式表示,包含子查询的语句和语义上等效的无子查询的语句性能差别不大。但针对检查存在性的情况中,联接查询性能更好,数据量越大联接查询会更能体现效率。
比如:
5、包含in和exists子查询区别
in子查询:结果是包含0个或者多个值的列表,表示值的等于关系。
exists子查询:它只返回true或false。表示一种存在的行为。
通常情况下in和exist可以互换。
当子查询结果不存在NULL值时,not in和not exists得到的查询结果一样,所生成的查询计划也一样。
当in里面的值为null的情况下查询记录为0;当exists里面的值为null情况下相当于查询条件不起作用。
示例:
说明:EXISTS与IN的使用效率的问题,通常情况下采用exists要比in效率高,但要看实际情况具体使用:IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。
6、包含比较运算符的子查询
子查询可以由一个比较运算符(=、<>、>、>=、<、!>、!<或<=)引入。使用比较运算符引入的子查询必须返回单个值而不能一个值列表。否则,SQL Server将显示一条错误信息。
原文地址:https://mp.weixin.qq.com/s/lmaiqVe3JwVziUZgEJ6Fnw
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
基础知识1,关联子查询和非关联子查询在非关联子查询中,内部查询只执行一次并返回它的值给外部查询,然后外部查询在它的处理中使用内部查询返回给它的值。而在关联子查询
本文实例讲述了tp5.1框架数据库子查询操作。分享给大家供大家参考,具体如下:首先构造子查询SQL,可以使用下面三种的方式来构建子查询。使用fetchSql方法
使用连接(JOIN)来代替子查询(Sub-Queries)MySQL从4.1开始支持SQL的子查询。这个技术可以使用SELECT语句来创建一个单列的查询结果,然
提高SQL执行效率的几点建议:◆尽量不要在where中包含子查询;关于时间的查询,尽量不要写成:whereto_char(dif_date,'yyyy-
目录概述子查询子查询分类按照查询的返回结果按子查询位置区分select后子查询from后子查询where和having型的子查询单个标量子查询应用多个标量子查询