SQL中IN,NOT IN,EXISTS,NOT EXISTS的用法和差别:

IN:确定给定的值是否与子查询或列表中的值相匹配。
IN 关键字使您得以选择与列表中的任意一个值匹配的行。
当要获得居住在 California、Indiana 或 Maryland 州的所有作者的姓名和州的列表时,就需要下列查询:
SELECT ProductID, ProductName FROM Northwind.dbo.Products WHERE CategoryID = 1 OR CategoryID = 4 OR CategoryID = 5
然而,如果使用 IN,少键入一些字符也可以得到同样的结果:
SELECT ProductID, ProductName FROM Northwind.dbo.Products WHERE CategoryID IN (1, 4, 5)
IN 关键字之后的项目必须用逗号隔开,并且括在括号中。
下列查询在 titleauthor 表中查找在任一种书中得到的版税少于 50% 的所有作者的 au_id,然后从 authors 表中选择 au_id 与

titleauthor 查询结果匹配的所有作者的姓名:
SELECT au_lname, au_fname FROM authors WHERE au_id IN (SELECT au_id FROM titleauthor WHERE royaltyper < 50)
结果显示有一些作者属于少于 50% 的一类。

NOT IN:通过 NOT IN 关键字引入的子查询也返回一列零值或更多值。
以下查询查找没有出版过商业书籍的出版商的名称。
SELECT pub_name FROM publishers WHERE pub_id NOT IN (SELECT pub_id FROM titles WHERE type = 'business')

使用 EXISTS 和 NOT EXISTS 引入的子查询可用于两种集合原理的操作:交集与差集。两个集合的交集包含同时属于两个原集合的所有元素。

差集包含只属于两个集合中的第一个集合的元素。

EXISTS:指定一个子查询,检测行的存在。
本示例所示查询查找由位于以字母 B 开头的城市中的任一出版商出版的书名:
SELECT DISTINCT pub_name FROM publishers WHERE EXISTS (SELECT * FROM titles WHERE pub_id = publishers.pub_id AND type =

'business')
SELECT distinct pub_name FROM publishers WHERE pub_id IN (SELECT pub_id FROM titles WHERE type = 'business')
两者的区别:
EXISTS:后面可以是整句的查询语句如:SELECT * FROM titles
IN:后面只能是对单列:SELECT pub_id FROM titles

NOT EXISTS:
例如,要查找不出版商业书籍的出版商的名称:
SELECT pub_name FROM publishers WHERE NOT EXISTS (SELECT * FROM titles WHERE pub_id = publishers.pub_id AND type =

'business')
下面的查询查找已经不销售的书的名称:
SELECT title FROM titles WHERE NOT EXISTS (SELECT title_id FROM sales WHERE title_id = titles.title_id)

in 和exits 的区别相关推荐

  1. Sql语句中in和exits的区别

    "小明" in (select sname from student) 等同于 exists (select * from student where sname="小明 ...

  2. mysql中in和exits的区别及使用

    我们以A.B表为例,两表通过 id 字段进行关联. 1.当 B 表的数据集小于 A 表时,用 in 优化 exist:使用 in ,两表执行顺序是先查 B 表,再查 A 表 select * from ...

  3. User Exits,Customer Exits,BADI and BTE基本概念

    Basic Concepts: 1. User Exits:是系统中预留的一些空的Form/Subroutine,获得Access key后可以在Form中写入自己的逻辑. 2. Customer E ...

  4. user exits, customer exits, badi

    user exits, customer exits, badi user exits, customer exits, badi Basic Concepts:1. User Exits: 是系统中 ...

  5. 京东四轮面试复盘,本人985渣硕一年实习经验,目前已经入职一周!

    前言 还记得上次京东面试,刚从家回到学校屁股还没坐热就给我打电话突击面试,完全没来得及准备.这次应该是前面大佬释放的名额,所以又把我捞起来了. 面试官主要在问一些基础的东西,整体也就半小时吧,因为问比 ...

  6. sql中exits和in的区别

    sql中exits和in的区别 转:http://hi.baidu.com/delphi_relive/blog/item/d7c0034a49c4932208f7ef21.html in 和 exi ...

  7. sql查询中使用in和exits比较和区别

    首先,查询中涉及到的两个表,一个user和一个order表,具体表的内容如下: user表: order表: in 确定给定的值是否与子查询或列表中的值相匹配.in在查询的时候,首先查询子查询的表,然 ...

  8. Mysql exits和in的区别

    使用exits和in查询的结果都相同,但是其中运行的机制并不一样. 举例:返回参加考试的人 1.exits SELECT *FROM peopleWHERE EXISTS(SELECT 1FROM t ...

  9. in exits区别

    1:外表大 内表小用in,外表小内表达用exits: 2:exits外表用loop 循环 ,每次循环再对内表查询: 3:in对主查询使用索引,exits对内表使用索引,not in 不使用索引,not ...

最新文章

  1. excel打印预览在哪里_打印小心机:轮页眉页脚的重要性
  2. Boost:排序的bimap双图的测试程序
  3. Visual Studio 2008 中使用插件Extjs提示的方法
  4. nginx和tomcat之间的简单配置
  5. 数据结构与索引-- mySql索引诡异事件
  6. PHP 正则表达式(PCRE)
  7. 【Kafka】kafka 偶然报错 NotLeaderForPartitionException
  8. JSR 168 and Portlet
  9. 如何用产品经理的思维设计移动报表
  10. android adb复制粘贴工具
  11. c# 异常处理 try-catch-finally
  12. 关于备考软考过程中历年真题的说明
  13. C/C++项目源码——数字雨DigitalRain
  14. 虚拟环境中更新pip
  15. android sim卡槽,包教包会,十分钟让你搞定与或卡槽
  16. 陌陌和它的解药,聊聊出海社交产品的思路
  17. 【激光slam仿真】启动gazebo仿真环境报错[spawn_model-4] process has died
  18. 睡不好为何昏昏沉沉?大脑:是我在发送警告
  19. Day36 洛谷P2192 HXY玩卡片(某数的每一位数字加和为9的倍数,则该数为9的倍数/多条件输出,灵活使用while(1)+break)
  20. jzxx2852观光公交

热门文章

  1. 构建网络广告投放平台(—)
  2. 人工智能顶会AAAI第一轮审稿结果出炉,却引发大量吐槽!
  3. 基于深度学习实现人脸检测,人脸姿态,眼嘴关键点,口罩等人脸属性识别
  4. MySql 执行count(1)、count(*) 与 count(列名) 区别
  5. JavaCV进阶opencv图像检测识别:摄像头图像人脸检测
  6. 程序员可以在周末做的8件事
  7. nmi中断配置_外部中断NMI中断.ppt
  8. Matlab/Simulink 自动代码生成详细步骤
  9. 算法作业1:倒水问题——三壶谜题
  10. 中学试卷上出现的爆笑答案