SQL中EXISTS的用法

原创 2013年12月04日 10:19:37

 

问题:查询学过编号为"01"并且也学过编号为"02"的课程的同学的信息

--方法1

select Student.* from Student , SC where Student.S# = SC.S# and SC.C# = '01' and exists (Select 1 from SC SC_2 where SC_2.S# = SC.S# and SC_2.C# = '02') order by Student.S#

 

EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False

 

例表A:TableIn 例表B:TableEx

 

(二). 比较使用 EXISTS 和 IN 的查询。注意两个查询返回相同的结果。
select * from TableIn where exists(select BID from TableEx where BNAME=TableIn.ANAME)
select * from TableIn where ANAME in(select BNAME from TableEx)


(三). 比较使用 EXISTS 和 = ANY 的查询。注意两个查询返回相同的结果。
select * from TableIn where exists(select BID from TableEx where BNAME=TableIn.ANAME)
select * from TableIn where ANAME=ANY(select BNAME from TableEx)

NOT EXISTS 的作用与 EXISTS 正好相反。如果子查询没有返回行,则满足了 NOT EXISTS 中的 WHERE 子句。

 

一种通俗的可以理解为:将外查询表的每一行,代入内查询作为检验,如果内查询返回的结果取非空值,则EXISTS子句返回TRUE,这一行行可作为外查询的结果行,否则不能作为结果。

 

EXISTS与IN的使用效率的问题,通常情况下采用exists要比in效率高,因为IN不走索引,但要看实际情况具体使用:

IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况

 

sql中exists和not exists用法

之所以要说这个问题,是因为项目中用到了not exists,但两者写的语句只有一点差别,结果一个有问题了,一个没问题。具体问题下面详细说明,先来看看exists如何应用。 exists: ...
  • u013038643
  • u013038643
  • 2017年05月14日 11:16
  • 1597

SQL语句中exists/not exists的用法分析

1、Student: Sno Sname Ssex Sage Sdept 200215121 李勇 男 20 CS 200215122 刘晨...
  • wozengcong
  • wozengcong
  • 2015年05月18日 13:20
  • 22917

数据库sql语句的exists总结

数据库sql语句的exists总结 sql exists in 学习   先来比较下语法: --deals=交易表,areas=地域表,例如香港;我们的目的:查看有交易的地域 ...
  • u010408365
  • u010408365
  • 2015年05月08日 14:50
  • 1877

sql语句中exists和in用法的区分

初学java两个多月,这两天在整理老师的笔记对数据库中的exists和in的用法分不清楚,从网上搜了些资料,作了点总结。 一、问题起因 起初是由两条语句执行结果不同,语句如下: --分析以下结果...
  • U___U
  • U___U
  • 2015年03月27日 15:25
  • 4515

SQL中EXISTS自己的一些用法和理解。

EXISTS 是判断是否存在,和in类似,但效率要比in高
  • zlhxiaohui
  • zlhxiaohui
  • 2014年10月11日 19:45
  • 1181

SQL中exists关键字的用法

exists用于检查一个子查询是否至少会返回一行数据(即检测行的存在),返回值为true或false。     语法: exists subquery     参数: subquery 是一个受限的 ...
  • wangshuxuncom
  • wangshuxuncom
  • 2013年11月05日 17:11
  • 8798

SQL关于IN和EXISTS的用法和区别的比较

1.exist,not exist一般都是与子查询一起使用. In可以与子查询一起使用,也可以直接in (a,b.....)。 2.exist会针对子查询的表使用索引. not exist会对主子查...
  • u012110719
  • u012110719
  • 2015年08月29日 23:41
  • 2698

SQL中IN和EXISTS用法的区别,sql中exists,not exists的用法

NOT IN SELECT DISTINCT MD001 FROM BOMMD WHERE MD001 NOT IN (SELECT MC001 FROM BOMMC) NOT EXISTS,ex...
  • wozengcong
  • wozengcong
  • 2015年05月18日 09:28
  • 6067

sqlserver if exists 用法

1 判断数据库是否存在 Sql代码 if exists (select * from sys.databases where name = ’数据库名’)    drop database ...
  • nysynzh
  • nysynzh
  • 2017年02月17日 21:33
  • 2307

sql语句if。。。else使用和exists使用

if exists (   select date from MonthStatisticOne where date = '2015-01-01 00:00:00'   )select 1...
  • yu12345678900
  • yu12345678900
  • 2013年12月11日 15:22
  • 1335
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQL中EXISTS的用法
举报原因:
原因补充:

(最多只允许输入30个字)