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

以下是SQL Server EXISTS 运算符的语法:

EXISTS ( subquery)

在此语法中,子查询仅是 SELECT 语句。子查询返回行后, EXISTS 运算符返回 TRUE 并立即停止处理。

请注意,即使子查询返回 NULL 值, EXISTS 运算符也会计算为 TRUE

  1. 带子查询的EXISTS返回NULL示例

以下示例返回 customers 表中的所有行:

SELECT

customer_id,

first_name,

last_name

FROM

sales.customers

WHERE

EXISTS (SELECT NULL)

ORDER BY

first_name,

last_name;

在此示例中,子查询返回包含 NULL 的结果集,这也导致 EXISTS 运算符计算为 TRUE 。

1.2. EXISTS带有相关子查询示例

以下示例查找已下过两个以上订单的所有客户:

SELECT

customer_id,

first_name, last_name

FROM

sales.customers c

WHERE

EXISTS (SELECT COUNT (*)FROM

sales.orders o

WHERE

customer_id = c.customer_id

GROUP BY

customer_id

HAVING COUNT (*) > 2 )

ORDER BY

first_name, last_name;

如果客户下达的订单数小于或等于 2 ,则子查询返回一个空结果集,该结果集导致 EXISTS 运算符计算 为 FALSE 。 根据 EXISTS 运算符的结果,客户是否包含在结果集中。

1.3. EXISTS 与 IN示例

以下语句使用 IN 运算符查找城市为 San Jose 的客户订单:

SELECT * FROM

sales.orders

WHERE

customer_id IN (

SELECT

customer_id

FROM

sales.customers

WHERE

city = 'San Jose' )

ORDER BY

customer_id,

order_date;

以下语句使用返回相同结果的 EXISTS 运算符:

SELECT * FROM

sales.orders o

WHERE EXISTS (

SELECT

customer_id

FROM

sales.customers c

WHERE

o.customer_id = c.customer_id

AND

city = 'San Jose'

)

ORDER BY

o.customer_id,

order_date;

SQL中EXISTS与IN的使用及效率

EXISTS与IN的使用效率的问题,通常情况下采用exists要比in效率高,因为IN不走索引。但要看实际情 况具体使用:IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。当A表数据与B表 数据一样大时,in与exists效率差不多,可任选一个使用。

以上就是我的分享,新手上道,请多多指教。如果有更好的方法或不懂得地方欢迎在评论区教导和提问喔!

SQL Exists运算符相关推荐

  1. sql exists_SQL Exists运算符–终极指南

    sql exists Hey, folks! Hope you all are doing well. In this article, we will be focusing on SQL Exis ...

  2. 【SQL基础-2】SQL常用运算符及通配符

    目录 1 常用运算符 1.1 比较运算符 1.2 BETWEEN范围运算符 1.2.1 当范围为日期时 1.2.2 当范围为字符时 1.3 IN列举运算符 1.4 NOT & AND & ...

  3. sql算术运算符_SQL运算符教程–按位,比较,算术和逻辑运算符查询示例

    sql算术运算符 At its core, the internet and all its applications are just data. 互联网及其所有应用程序的核心只是数据. Every ...

  4. ORACLE SQL SET运算符

    ** ORACLE SQL SET运算符 ** 开发工具与关键技术:Oracle sql*plus PLSQL Developer 作者:何任贤 撰写时间:2019年01月01日 SET运算符,主要是 ...

  5. sql 两个表列包含_Oracle数据库扩展语言PL/SQL之运算符

    [本文详细介绍了Oracle数据库扩展语言PL/SQL的运算符,欢迎读者朋友们阅读.转发和收藏!] 1 基本概念 运算符是一个符号,告诉编译器执行特定的数学或逻辑操作. PL/SQL 语言有丰富的内置 ...

  6. sql算术运算符_SQL中的算术运算符

    sql算术运算符 SQL | 算术运算符 (SQL | Arithmetic Operators) Different number-crunching administrators are util ...

  7. sql server运算符_SQL Server执行计划中SELECT运算符的主要概念

    sql server运算符 One of the main responsibilities of a database administrator is query tuning and troub ...

  8. sql server运算符_了解SQL Server中集合理论与集合运算符之间的相互作用

    sql server运算符 In this article, we will describe the relation between the Set Theory and SQL Server S ...

  9. SQL UNION运算符

    SQL UNION运算符 UNION运算符用于组合两个或更多SELECT语句的结果集,而不返回任何重复的行. UNION中的每个SELECT语句必须具有相同的列数 这些列也必须具有相似的数据类型 每个 ...

最新文章

  1. 十分钟成为 Contributor 系列 | 为 TiDB 重构 built-in 函数
  2. lisp 任意点 曲线距离_奇怪的知识增加了:把标准形式的双曲线旋转来解决问题...
  3. java List及其实现类
  4. Django的View(视图)
  5. 二叉树的遍历(算法导论第三版12.1-4)(包含先序遍历,后序遍历和中序遍历)
  6. Tensorflow 卷积神经网络(三)池化与采样
  7. java拦截器和过滤器的区别_拦截器和过滤器的区别
  8. Java字符流拷贝/复制文本文件,字节流拷贝文本文件乱码,很经典简便
  9. Qt编写可视化大屏电子看板系统2-配色方案
  10. del在php中什么意思,delete键是什么意思
  11. Indexes and Indexing
  12. linux 终止作业任务命令,Linux中作业控制命令
  13. 【SSL_1715】计算面积
  14. 【一级考试专题-1】整数和均值
  15. STM32CubeMX学习笔记(22)——CRC接口使用
  16. play-framework的安装配置(OS X和windows版)
  17. gocolly-OnResponse的使用(3)
  18. 【Python游戏】Python实现一个Q版泡泡堂小游戏 | 附带源码
  19. PHPCMS系统使用的弹出窗口插件artDialog
  20. 用java单源最短路径问题_java 单源最短路径问题

热门文章

  1. sql 四舍五入和保存为整数
  2. 企业文化建设管理规范化的方向失准
  3. php调用带验证的xfire,Xfire文件读取漏洞
  4. Tomcat日志监控工具——Probe
  5. 在线编辑方法分享!图片在线编辑软件推荐。​
  6. 蒙特卡洛树搜索(MCTS)详解
  7. 服装店盘点太累太慢怎么改进?
  8. 庆祝一下_如何远距离庆祝母亲节
  9. 这个游戏套装,想考考你对字体的知识储备|这个设计了不起
  10. android 获取蓝牙信号强度,连接后获取蓝牙RSSI信号强度