sql中innotinexistsnotexists的用法和差别

sql中innotinexistsnotexists的用法和差别

ID:34726105

大小:48.36 KB

页数:4页

时间:2019-03-10

sql中innotinexistsnotexists的用法和差别_第1页
sql中innotinexistsnotexists的用法和差别_第2页
sql中innotinexistsnotexists的用法和差别_第3页
sql中innotinexistsnotexists的用法和差别_第4页
资源描述:

《sql中innotinexistsnotexists的用法和差别》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、sql中in、notin、exists、notexists用法和差别exists(sql返回结果集为真)notexists(sql不返回结果集为真)如下:表AIDNAME1  A12  A23  A3表BIDAIDNAME1  1B12  2B23  2B3表A和表B是1对多的关系A.ID=>B.AIDSELECTID,NAMEFROMAWHEREEXIST(SELECT*FROMBWHEREA.ID=B.AID)执行结果为1A12A2原因可以按照如下分析SELECTID,NAMEFROMAWHEREEXISTS(SELECT*FROM

2、BWHEREB.AID=1)--->SELECT*FROMBWHEREB.AID=1有值返回真所以有数据SELECTID,NAMEFROMAWHEREEXISTS(SELECT*FROMBWHEREB.AID=2)--->SELECT*FROMBWHEREB.AID=2有值返回真所以有数据SELECTID,NAMEFROMAWHEREEXISTS(SELECT*FROMBWHEREB.AID=3)--->SELECT*FROMBWHEREB.AID=3无值返回真所以没有数据NOTEXISTS就是反过来SELECTID,NAMEFROMA

3、WHERE NOTEXIST(SELECT*FROMBWHEREA.ID=B.AID)执行结果为3A3===========================================================================EXISTS=IN,意思相同不过语法上有点点区别,好像使用IN效率要差点,应该是不会执行索引的原因SELECTID,NAMEFROMA WHERE IDIN(SELECTAIDFROMB)NOTEXISTS=NOTIN,意思相同不过语法上有点点区别SELECTID,NAMEFROMAWHE

4、RE ID NOTIN(SELECTAIDFROMB)下面是普通的用法:SQL中IN,NOTIN,EXISTS,NOTEXISTS的用法和差别:  IN:确定给定的值是否与子查询或列表中的值相匹配。  IN关键字使您得以选择与列表中的任意一个值匹配的行。  当要获得居住在California、Indiana或Maryland州的所有作者的姓名和州的列表时,就需要下列查询:  SELECTProductID,ProductNameFROMNorthwind.dbo.ProductsWHERECategoryID=1ORCategoryID

5、=4ORCategoryID=5  然而,如果使用IN,少键入一些字符也可以得到同样的结果:  SELECTProductID,ProductNameFROMNorthwind.dbo.ProductsWHERECategoryIDIN(1,4,5)  IN关键字之后的项目必须用逗号隔开,并且括在括号中。  下列查询在titleauthor表中查找在任一种书中得到的版税少于50%的所有作者的au_id,然后从authors表中选择au_id与  titleauthor查询结果匹配的所有作者的姓名:  SELECTau_lname,au_

6、fnameFROMauthorsWHEREau_idIN(SELECTau_idFROMtitleauthorWHEREroyaltyper<50)  结果显示有一些作者属于少于50%的一类。  NOTIN:通过NOTIN关键字引入的子查询也返回一列零值或更多值。  以下查询查找没有出版过商业书籍的出版商的名称。  SELECTpub_nameFROMpublishersWHEREpub_idNOTIN(SELECTpub_idFROMtitlesWHEREtype='business')  使用EXISTS和NOTEXISTS引入的子

7、查询可用于两种集合原理的操作:交集与差集。    两个集合的交集包含同时属于两个原集合的所有元素。  差集包含只属于两个集合中的第一个集合的元素。  EXISTS:指定一个子查询,检测行的存在。  本示例所示查询查找由位于以字母B开头的城市中的任一出版商出版的书名:  SELECTDISTINCTpub_nameFROMpublishersWHEREEXISTS(SELECT*FROMtitlesWHEREpub_id=publishers.pub_idANDtype=  'business')  SELECTdistinctpub_n

8、ameFROMpublishersWHEREpub_idIN(SELECTpub_idFROMtitlesWHEREtype='business')  两者的区别:  EXISTS:后面可以是整句的查询语句

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。