仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1045|回复: 8
打印 上一主题 下一主题

[学习教程] Exists用法

[复制链接]
老尸 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 14:19:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
用一个库#bak_database存放这些历史数据。exists与notexists
http://msdn.microsoft.com/zh-cn/library/ms188336.aspx
SQLServer2008联机丛书(2009年5月)
EXISTS(Transact-SQL)
指定一个子查询,测试行是不是存在。
Transact-SQL语法商定
语法
EXISTSsubquery参数
subquery
受限定的SELECT语句。不同意利用COMPUTE子句和INTO关头字。有关具体信息,请参阅SELECT(Transact-SQL)中有关子查询的信息。
了局范例
Boolean
了局值
假如子查询包括任何行,则前往TRUE。
示例
A.在子查询中利用NULL仍旧前往了局集
以下示例前往在子查询中指定了NULL时的了局集,而且经由过程利用EXISTS仍旧求值为TRUE。
复制代码
USEAdventureWorks;
GO
SELECTDepartmentID,Name
FROMHumanResources.Department
WHEREEXISTS(SELECTNULL)
ORDERBYNameASC;B.对照利用EXISTS和IN的查询
以下示例对照了两个语义同等的查询。第一个查询利用EXISTS,第二个查询利用IN。
复制代码
USEAdventureWorks;
GO
SELECTa.FirstName,a.LastName
FROMPerson.ContactASa
WHEREEXISTS
(SELECT*
FROMHumanResources.EmployeeASb
WHEREa.ContactId=b.ContactID
ANDa.LastName=Johnson);
GO上面的查询利用IN。
复制代码
USEAdventureWorks;
GO
SELECTa.FirstName,a.LastName
FROMPerson.ContactASa
WHEREa.LastNameIN
(SELECTa.LastName
FROMHumanResources.EmployeeASb
WHEREa.ContactId=b.ContactID
ANDa.LastName=Johnson);
GO以下是个中任一查询的了局集。
复制代码
FirstNameLastName
------------------------------------------------------------
BarryJohnson
DavidJohnson
WillisJohnson
(3row(s)affected)C.对照利用EXISTS和=ANY的查询
以下示例显现两个查找其称号与供给商称号不异的商铺的查询。第一个查询利用EXISTS,第二个查询利用=ANY。
复制代码
USEAdventureWorks;
GO
SELECTDISTINCTs.Name
FROMSales.StoreASs
WHEREEXISTS
(SELECT*
FROMPurchasing.VendorASv
WHEREs.Name=v.Name);
GO上面的查询利用=ANY。
复制代码
USEAdventureWorks;
GO
SELECTDISTINCTs.Name
FROMSales.StoreASs
WHEREs.Name=ANY
(SELECTv.Name
FROMPurchasing.VendorASv);
GOD.对照利用EXISTS和IN的查询
以下示例显现查找以P开首的部门员工的查询。
复制代码
USEAdventureWorks;
GO
SELECTc.FirstName,c.LastName,e.Title
FROMPerson.ContactASc
JOINHumanResources.EmployeeASe
ONe.ContactID=c.ContactID
WHEREEXISTS
(SELECT*
FROMHumanResources.DepartmentASd
JOINHumanResources.EmployeeDepartmentHistoryASedh
ONd.DepartmentID=edh.DepartmentID
WHEREe.EmployeeID=edh.EmployeeID
ANDd.NameLIKEP%);
GO上面的查询利用IN。
复制代码
USEAdventureWorks;
GO
SELECTc.FirstName,c.LastName,e.Title
FROMPerson.ContactAScJOINHumanResources.EmployeeASe
ONe.ContactID=c.ContactID
JOINHumanResources.EmployeeDepartmentHistoryASedh
ONe.EmployeeID=edh.EmployeeID
WHEREedh.DepartmentIDIN
(SELECTDepartmentID
FROMHumanResources.Department
WHERENameLIKEP%);
GOE.利用NOTEXISTS
NOTEXISTS的感化与EXISTS正相反。假如子查询没有前往行,则满意NOTEXISTS中的WHERE子句。以下示例查找不在部门中且姓名以P开首的员工。
复制代码
SELECTc.FirstName,c.LastName,e.Title
FROMPerson.ContactASc
JOINHumanResources.EmployeeASe
ONe.ContactID=c.ContactID
WHERENOTEXISTS
(SELECT*
FROMHumanResources.DepartmentASd
JOINHumanResources.EmployeeDepartmentHistoryASedh
ONd.DepartmentID=edh.DepartmentID
WHEREe.EmployeeID=edh.EmployeeID
ANDd.NameLIKEP%)
ORDERBYLastName,FirstName
GO上面是了局集:
<p>复制代码
FirstNameLastNameTitle
------------------------------------------------------------------------
SyedAbbasPacificSalesManager
HazemAbolrousQualityAssuranceManager
HumbertoAcevedoApplicationSpecialist
PilarAckermanShipping&ReceivingSuperviso
Fran?oisAjenstat&nbs使为了数据安全,我们搭建了主从。但实时主从备份只能防止硬件问题,比如主库的硬盘损坏。但对于误操作,则无能为力。比如在主库误删一张表,或者一个update语句没有指定where条件,导致全表被更新。
沙发
发表于 2015-1-18 12:55:22 | 只看该作者
可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。
飘灵儿 该用户已被删除
板凳
发表于 2015-1-26 21:03:06 | 只看该作者
原来公司用过MYSQL自己也只是建个表写个SQL
精灵巫婆 该用户已被删除
地板
发表于 2015-2-4 21:41:56 | 只看该作者
我是一个ERP初学者,对于前台运用基本熟悉,但对于后台SQLServer的运用一点也不懂,特想学习下相关资料。至少懂得一些基本的运用。希望各位能给于建议,小弟再谢过!
愤怒的大鸟 该用户已被删除
5#
发表于 2015-2-10 19:44:47 | 只看该作者
原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜!
柔情似水 该用户已被删除
6#
发表于 2015-3-1 15:13:22 | 只看该作者
是要和操作系统进行Socket通讯的场景。否则建议慎重!
飘飘悠悠 该用户已被删除
7#
发表于 2015-3-10 20:16:34 | 只看该作者
比如日志传送、比如集群。。。
海妖 该用户已被删除
8#
发表于 2015-3-17 10:39:19 | 只看该作者
我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力
小魔女 该用户已被删除
9#
发表于 2015-3-24 08:16:46 | 只看该作者
作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-4 10:33

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表