EXISTS
指定一个子查询,检测行的存在。

语法
EXISTS subquery

参数
subquery
是一个受限的 SELECT 语句 (不允许有 COMPUTE 子句和 INTO 关键字)

结果类型
Boolean

结果值
如果子查询包含行,则返回 TRUE. EXISTS(SELECT NULL)也返回True

SELECT c.CustomerID, CompanyName FROM Customers c
执行结果:91条记录

SELECT c.CustomerID, CompanyName
  FROM Customers c
 WHERE EXISTS(SELECT NULL)
执行结果:91条记录

找出所有下过订单的客户
使用EXISTS的写法:
SELECT c.CustomerID, CompanyName
  FROM Customers c
 WHERE EXISTS
 (SELECT 1 FROM Orders o WHERE o.CustomerID = c.CustomerID)
执行结果:89条记录
 
使用in的写法:
SELECT c.CustomerID, CompanyName
  FROM Customers c
where c.CustomerID in(select distinct CustomerID from Orders)
执行结果:89条记录

检查:
SELECT c.CustomerID, CompanyName FROM Customers c
where c.CustomerID='ALFKI'
执行结果:1条记录

SELECT OrderID FROM Orders o
where o.CustomerID='ALFKI'
执行结果:6条记录
 
SELECT c.CustomerID, CompanyName
  FROM Customers c
 WHERE EXISTS
 (SELECT OrderID FROM Orders o WHERE o.CustomerID = c.CustomerID) and c.CustomerID='ALFKI'
执行结果:1条记录

找出所有没下过订单的客户
使用NOT EXISTS的写法:
SELECT c.CustomerID, CompanyName
  FROM Customers c
 WHERE NOT EXISTS
 (SELECT 1 FROM Orders o WHERE o.CustomerID = c.CustomerID)
执行结果:2条记录
 
使用NOT IN的写法:
SELECT c.CustomerID, CompanyName
  FROM Customers c
where c.CustomerID not in(select distinct CustomerID from Orders)
执行结果:2条记录

转载于:https://www.cnblogs.com/sangsmart/archive/2010/03/19/1689992.html

sql,EXISTS用法相关推荐

  1. sql exists用法_新同事不讲武德,这SQL语句写得忒野了

    来源 | developer.aliyun.com/article/72501今天来分享几个MySQL常见的SQL错误(不当)用法.我们在作为一个初学者时,很有可能自己在写SQL时也没有注意到这些问题 ...

  2. sql语句中exists用法详解

    文章目录 一.语法说明 exists: not exists: 二.常用示例说明 1.查询a表在b表中存在数据 2.查询a表在b表中不存在数据 3.查询时间最新记录 4.exists替代distinc ...

  3. SQL学习:not exists用法

    SQL学习:not exists用法 与 not in 的效果一样, 但这个效率相对高一点 例如: a1表:id name 1 张三 2 李四 a2表:id name 1 张三 2 李四 刚使用的新手 ...

  4. oracle中的exists 和 not exists 用法详解

    from:http://blog.sina.com.cn/s/blog_601d1ce30100cyrb.html oracle中的exists 和 not exists 用法详解 (2009-05- ...

  5. oracle中的exists 和not exists 用法详解

    有两个简单例子,以说明 "exists"和"in"的效率问题 1) select * from T1 where exists(select 1 from T2 ...

  6. 8 种常见的SQL错误用法

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | db匠 来源 | http://yq.aliy ...

  7. 你知道这 8 种 SQL 错误用法吗?

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 来源:r6d.cn/J2bw 简介 MySQL在2016年仍然保持强劲的数 ...

  8. 数据库优化:8 种常见的SQL错误用法

    作者 | db匠 来源 | http://yq.aliyun.com/articles/72501 前言 MySQL在2016年仍然保持强劲的数据库流行度增长趋势.越来越多的客户将自己的应用建立在My ...

  9. 盘点 8 种最坑的 SQL 错误用法

    今天为大家搜集了几类SQL错误用法,纯纯纯纯干货,来了! 1.LIMIT 语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方.比如对于下面简单的语句,一般 DBA 想到的办法是在 typ ...

最新文章

  1. Linux Tomcat安装,Linux配置Tomcat,Linux Tomcat修改内存,Linux tomcat修改端口
  2. Win10系统删除文件需提供管理员权限-- 解决方案
  3. python语言入门n-python语言入门之字符串的一些用法
  4. 【C 语言】数据类型本质 ( 数据类型 | 数据类型本质 | 数组地址 | 数组首元素地址 )
  5. 【PAT乙级】1052 卖个萌 (20 分)
  6. 西南石油大学计算机科学校区,任冬梅 - 西南石油大学 - 计算机科学学院
  7. idea 父文件_在ideal创建新的模块(子项目,同时依赖父模块)
  8. Myeclipse+SSH+miniui,Action数据加载到miniui表格
  9. 不会吧不会吧!不会有人还有没有用CSDN的浏览器插件吧!
  10. 启动的时候闪退_APP突然闪退怎么办?学会这五个妙招比换手机实用,看完望周知...
  11. sql server 加密_SQL Server机密–第一部分–加密基础知识和SQL Server加密功能
  12. 卷积与反卷积、步长(stride)与重叠(overlap)及 output 的大小
  13. 信息学奥赛一本通(C++版)在线评测系统 1205:汉诺塔问题
  14. 阀门的开关方向_一字阀门开关方向怎么辨认
  15. No overload matches this call(vue tsx)
  16. c语言中e的n次方怎么打,C语言中N次方怎么打
  17. 关于我对游戏开发的理解
  18. 2019年字节跳动2020届秋招在线笔试真题(后端开发工程师)
  19. android WebView加载视频只有声音没有画面
  20. 终于有一篇文章把饭金展开说明白了。

热门文章

  1. TCP 三次握手与四次挥手
  2. oracle怎么将一列挪到另一列,详细讲解Oracle数据库的数据迁移方法
  3. 【Python-ML】SKlearn库RANSAC拟合高鲁棒性回归模型
  4. DLL的高级操作技术——Windows核心编程学习手札之二十
  5. Leetcode 211. 添加与搜索单词 - 数据结构设计 解题思路及C++实现
  6. redis的数据结构||1) 字符串类型2) 哈希类型3) 列表类型4) 集合类型 5) 有序集合类型详解
  7. 常见的数据结构——栈、队列、数组、链表和红黑树
  8. Timer的schedule和scheduleAtFixedRate方法的区别解析
  9. VS 2012 NuGet错误
  10. Java 技术篇-借助自定义对象实现函数返回多个不同类型的值实例演示