SQL Server子查询

一、 SQL Server子查询。

  1. 子查询是一个嵌套在另一个语句(如:[SELECT],[INSERT],[UPDATE]或[DELETE])语句或其他子查询中的查询。任何允许使用表达式的地方都可以使用子查询。
  2. 一般子查询要保证返回结果只有一个(即一行,一列)in子查询返回一列多行。子查询的一个查询结果可以作为另外一个查询的条件。
  3. 子查询从内往外读(写),当要显示多个表数据时使用联结,只显示一个表数据时使用子查询。
  4. 虽然子查询和连接都要查询多个表,但子查询和连接不同,子查询是更为复杂的查询。子查询可以计算一个变化的聚合函数值,并返回到外围查询进行比较,而连接做不到。大多数情况下子查询和连接是等价的。

二、 SQL Server嵌套子查询。

  1. 子查询可以嵌套在另一个子查询中,SQL Server最多支持 32 个嵌套级别。

  2. 嵌套查询是指将一个查询块嵌套在另一个查询块的where子句或having短语的条件中的查询。

  3. 示例。

    select column_name1,column_name2,column_name3
    from list
    where condition = (select son_column_name from son_list where son_condition = true);
    

三、 SQL Server相关子查询。

  1. 相关子查询是使用外部查询的值的[子查询]。 换句话说,它取决于外部查询的值。 由于这种依赖性,相关子查询不能作为简单子查询独立执行。

  2. 此外,对外部查询评估的每一行重复执行一次相关子查询。相关子查询也称为重复子查询。

  3. 示例。

    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运算符。

  1. EXISTS 运算符是一个逻辑运算符,用于检查子查询是否返回任何行。 如果子查询返回一行或多行,则EXISTS 运算符返回 TRUE。

  2. 示例。

    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);
    
  3. 在此语法中,子查询仅是 SELECT 语句。子查询返回行后, EXISTS 运算符返回 TRUE 并立即停止处理。请注意,即使子查询返回 NULL 值, EXISTS 运算符也会计算为 TRUE。

  4. EXISTS 与 IN 的区别:in是把外表和内表作hash连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。

  5. EXISTS与IN的使用效率,通常情况下采用exists要比in效率高,因为IN不走索引。

五、 SQL Server Any运算符。

  1. ANY 运算符是一个逻辑运算符,它将标量值与子查询返回的单列值集进行比较。

  2. 示例。

    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运算符。

  1. SQL Server ALL 运算符是一个逻辑运算符,它将标量值与子查询返回的单列值列表进行比较。

  2. 示例。

    SELECT product_name,list_price
    FROM production.products
    WHERE list_price > ALL (
    SELECT AVG (list_price) avg_list_price FROM production.products);
    
  3. scalar_expression > ALL ( subquery )
    如果 scalar_expression 大于子查询返回的最大值,则表达式返回 TRUE 。

  4. scalar_expression < ALL ( subquery )
    如果标量表达式( scalar_expression )小于子查询( subquery )返回的最小值,则表达式求值为 TRUE 。

SQL Server子查询相关推荐

  1. SQL SERVER 子查询的用法

    子查询是一个嵌套在 SELECT.INSERT.UPDATE 或 DELETE 语句或其他子查询中的查询.任何允许使用表达式的地方都可以使用子查询.在此示例中,子查询用作 SELECT 语句中名为 M ...

  2. sql server 子查询的两种方式

    单一返回值: (1) 返回单个值 SELECT 列名 FROM 表名 WHERE 列名 = ( SELECT <单列> FROM 该表表名 WHERE<只返回行的条件> ) 例 ...

  3. sql 标量子查询_SQL Server 2017:标量子查询简化

    sql 标量子查询 Nowadays a lot of developers use Object-Relational Mapping (ORM) frameworks. ORM is a prog ...

  4. 优化SQL Server数据库查询方法

    本文详细介绍了优化SQL Server数据库查询方法. SQL Server数据库查询速度慢的原因有很多,常见的有以下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) ...

  5. SQL Server FILESTREAM查询和文件组

    In this series of the SQL Server FILESTREAM (see TOC at bottom), We have gone through various aspect ...

  6. sql server嵌套查询

    sql server嵌套查询 一 带有IN谓词的子查询 1. 查询与"刘晨"在同一个系学习的学生 SELECT sno ,sname FROM student WHERE sdep ...

  7. SQL Server 慢查询

    SQL Server 慢查询语句查询 1.前10条慢查询 SELECT TOP 10[session_id],[request_id],[start_time] AS '开始时间',[status] ...

  8. SQL Server 2016 查询存储性能优化小结

    SQL Server 2016已经发布了有半年多,相信还有很多小伙伴还没有开始使用,今天我们来谈谈SQL Server 2016 查询存储性能优化,希望大家能够喜欢 作为一个DBA,排除SQL Ser ...

  9. SQL Server数据库查询速度慢的原因和解决方法

    SQL Server数据库查询速度慢的原因和解决方法 参考文章: (1)SQL Server数据库查询速度慢的原因和解决方法 (2)https://www.cnblogs.com/MyChange/p ...

最新文章

  1. mac 下launchpad超级慢的问题
  2. angularJs项目初建
  3. magento2 checkout totals添加产品属性
  4. 实验吧之【Forms、天网管理系统】
  5. 简单十步python使用django框架建立博客网站
  6. 程序员必知的前端演进史
  7. 两路共享LSTM时序数据预测实战+界面可视化应用
  8. 修改Linux文件格式为unix
  9. 直观理解Law of Total Variance(方差分解公式)
  10. 微信时代的巨大冲击 QQ空间面临艰难转型
  11. itext7学习笔记杂谈系列2——在itext7中添加中文(其他字体)和字体相关事
  12. QT EXCEL 删除整行
  13. 09、IO流—File类与IO流
  14. matlab求系统状态时间响应,MATLAB求解系统零状态响应可以调用( )函数。
  15. Python爬虫笔记——解析json数据(以周杰伦歌单为例)及Headers
  16. Maven项目中,添加依赖项后仍然出现找不到该jar包的解决方法
  17. Unity for Windows: II – Publishing Unity games to Windows Store
  18. pytorch学习笔记——Sequential的使用和Flatten和flatten的区别
  19. 图片极致压缩,不失真
  20. 大学物理:CH2-电磁学

热门文章

  1. UnityShader 效果积累
  2. java悲观锁_Java乐观锁、悲观锁
  3. 前端开发面试知识点大纲:
  4. 四十、Fluent 颗粒\气泡PBM模型
  5. 华为防火墙做单臂路由_华为设备单臂路由配置
  6. Java与Python混合开发
  7. springboot毕设项目高校智联招聘平台设计与实现ac21m(java+VUE+Mybatis+Maven+Mysql)
  8. setInterval与setTimeout的区别
  9. js setInterval setTimeout用法
  10. 字节跳动Android面试题目与答案(2020)