SQL Server子查询
SQL Server子查询
一、 SQL Server子查询。
- 子查询是一个嵌套在另一个语句(如:[SELECT],[INSERT],[UPDATE]或[DELETE])语句或其他子查询中的查询。任何允许使用表达式的地方都可以使用子查询。
- 一般子查询要保证返回结果只有一个(即一行,一列)in子查询返回一列多行。子查询的一个查询结果可以作为另外一个查询的条件。
- 子查询从内往外读(写),当要显示多个表数据时使用联结,只显示一个表数据时使用子查询。
- 虽然子查询和连接都要查询多个表,但子查询和连接不同,子查询是更为复杂的查询。子查询可以计算一个变化的聚合函数值,并返回到外围查询进行比较,而连接做不到。大多数情况下子查询和连接是等价的。
二、 SQL Server嵌套子查询。
子查询可以嵌套在另一个子查询中,SQL Server最多支持 32 个嵌套级别。
嵌套查询是指将一个查询块嵌套在另一个查询块的where子句或having短语的条件中的查询。
示例。
select column_name1,column_name2,column_name3 from list where condition = (select son_column_name from son_list where son_condition = true);
三、 SQL Server相关子查询。
相关子查询是使用外部查询的值的[子查询]。 换句话说,它取决于外部查询的值。 由于这种依赖性,相关子查询不能作为简单子查询独立执行。
此外,对外部查询评估的每一行重复执行一次相关子查询。相关子查询也称为重复子查询。
示例。
SELECT column_name1,column_name2,column_name3 FROM list b1 WHERE condition IN ( SELECT MAX(b2.son_column_name) FROM son_list b2 WHERE b2.column_id = b1.column_id);
四、 SQL Server Exists运算符。
EXISTS 运算符是一个逻辑运算符,用于检查子查询是否返回任何行。 如果子查询返回一行或多行,则EXISTS 运算符返回 TRUE。
示例。
SELECT column_name1,column_name2,column_name3 FROM list b1 WHERE EXISTS (SELECT COUNT (*) FROM son_list b2 WHERE b2.customer_id = b1.customer_id);
在此语法中,子查询仅是 SELECT 语句。子查询返回行后, EXISTS 运算符返回 TRUE 并立即停止处理。请注意,即使子查询返回 NULL 值, EXISTS 运算符也会计算为 TRUE。
EXISTS 与 IN 的区别:in是把外表和内表作hash连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。
EXISTS与IN的使用效率,通常情况下采用exists要比in效率高,因为IN不走索引。
五、 SQL Server Any运算符。
ANY 运算符是一个逻辑运算符,它将标量值与子查询返回的单列值集进行比较。
示例。
SELECT product_name,list_price FROM production.products WHERE product_id = ANY ( SELECT product_id FROM sales.order_items WHERE quantity >= 2);
六、 SQL Server All运算符。
SQL Server ALL 运算符是一个逻辑运算符,它将标量值与子查询返回的单列值列表进行比较。
示例。
SELECT product_name,list_price FROM production.products WHERE list_price > ALL ( SELECT AVG (list_price) avg_list_price FROM production.products);
scalar_expression > ALL ( subquery )
如果 scalar_expression 大于子查询返回的最大值,则表达式返回 TRUE 。scalar_expression < ALL ( subquery )
如果标量表达式( scalar_expression )小于子查询( subquery )返回的最小值,则表达式求值为 TRUE 。
SQL Server子查询相关推荐
- SQL SERVER 子查询的用法
子查询是一个嵌套在 SELECT.INSERT.UPDATE 或 DELETE 语句或其他子查询中的查询.任何允许使用表达式的地方都可以使用子查询.在此示例中,子查询用作 SELECT 语句中名为 M ...
- sql server 子查询的两种方式
单一返回值: (1) 返回单个值 SELECT 列名 FROM 表名 WHERE 列名 = ( SELECT <单列> FROM 该表表名 WHERE<只返回行的条件> ) 例 ...
- sql 标量子查询_SQL Server 2017:标量子查询简化
sql 标量子查询 Nowadays a lot of developers use Object-Relational Mapping (ORM) frameworks. ORM is a prog ...
- 优化SQL Server数据库查询方法
本文详细介绍了优化SQL Server数据库查询方法. SQL Server数据库查询速度慢的原因有很多,常见的有以下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) ...
- SQL Server FILESTREAM查询和文件组
In this series of the SQL Server FILESTREAM (see TOC at bottom), We have gone through various aspect ...
- sql server嵌套查询
sql server嵌套查询 一 带有IN谓词的子查询 1. 查询与"刘晨"在同一个系学习的学生 SELECT sno ,sname FROM student WHERE sdep ...
- SQL Server 慢查询
SQL Server 慢查询语句查询 1.前10条慢查询 SELECT TOP 10[session_id],[request_id],[start_time] AS '开始时间',[status] ...
- SQL Server 2016 查询存储性能优化小结
SQL Server 2016已经发布了有半年多,相信还有很多小伙伴还没有开始使用,今天我们来谈谈SQL Server 2016 查询存储性能优化,希望大家能够喜欢 作为一个DBA,排除SQL Ser ...
- SQL Server数据库查询速度慢的原因和解决方法
SQL Server数据库查询速度慢的原因和解决方法 参考文章: (1)SQL Server数据库查询速度慢的原因和解决方法 (2)https://www.cnblogs.com/MyChange/p ...
最新文章
- mac 下launchpad超级慢的问题
- angularJs项目初建
- magento2 checkout totals添加产品属性
- 实验吧之【Forms、天网管理系统】
- 简单十步python使用django框架建立博客网站
- 程序员必知的前端演进史
- 两路共享LSTM时序数据预测实战+界面可视化应用
- 修改Linux文件格式为unix
- 直观理解Law of Total Variance(方差分解公式)
- 微信时代的巨大冲击 QQ空间面临艰难转型
- itext7学习笔记杂谈系列2——在itext7中添加中文(其他字体)和字体相关事
- QT EXCEL 删除整行
- 09、IO流—File类与IO流
- matlab求系统状态时间响应,MATLAB求解系统零状态响应可以调用( )函数。
- Python爬虫笔记——解析json数据(以周杰伦歌单为例)及Headers
- Maven项目中,添加依赖项后仍然出现找不到该jar包的解决方法
- Unity for Windows: II – Publishing Unity games to Windows Store
- pytorch学习笔记——Sequential的使用和Flatten和flatten的区别
- 图片极致压缩,不失真
- 大学物理:CH2-电磁学