首页下载分类最新更新汉化补丁下载排行国产软件国外软件注册破解资讯中心游戏娱乐
78软件站 - 首页
文章搜索: 分类 关键字
您的位置:首页网络编程数据库类 → 实例讲解SQL Server中非常有用EXISTS结构
实例讲解SQL Server中非常有用EXISTS结构
日期:2008-3-26 10:37:18 人气:0     [ ]
EXISTS结构

EXISTS结构是一个TSQL函数,这个函数会就圆括号中的子查询返回一个布尔变量。如果子查询返回了任意行的话,这个结构就返回真;否则,它就返回假。这个结构特别适用于查询表中是否存在某些记录。它也非常适合来决定是否在表中运行更新或者插入语句(在这篇文章中,随后我将向大家介绍)。

Listing A中创建了一个表并插入了一些数据,这样你就可以利用这张表来看看EXISTS结构是如何工作的了。Listing B中的脚本使用EXISTS结构在SalesHistory表中检查每一行,并根据已存在的行得到一个变量。这个脚本将返回1(真),这意味着SalesHistory表包含你所要查询的行。

在这种情况下,一旦在SalesHistory表中找到了一条记录,EXISTS结构就不会继续查找,并马上返回1。使用EXISTS结构额外的好处就是,一旦它找到满足条件的记录,就会立即返回。

Listing C与上面的脚本类似,但是它的返回值是0,因为在这个条件下,EXISTS条件不满足。

由于EXISTS结构的工作原理,所以下面的语句所实现的功能是一样的。

SELECT * FROM SalesHistory

WHERE EXISTS(SELECT NULL)

SELECT * FROM SalesHistory

WHERE 1 = 1

SELECT * FROM SalesHistory

WHERE EXISTS(SELECT 1)

在刚才的脚本中,你可能会对下面的语句感到迷惑:

SELECT * FROM SalesHistory

WHERE EXISTS(SELECT NULL)

因为NULL在数据库中是一个值(它是一个未知的值),在出现NULL值的地方EXISTS结构都将返回真。

开发者很少使用EXISTS对子查询进行操作。下面的查询将返回同样的结果集,虽然它们的结构不同。第一个查询使用了EXISTS的相关子查询,第二查询在SalesHistory表中,将SalePrice字段与该字段的总平均值进行比较。

SELECT * FROM SalesHistory sh

WHERE EXISTS

(
      SELECT AVG(SalePrice)

      FROM SalesHistory shi

      HAVING AVG(SalePrice) > sh.SalePrice
) 
SELECT * FROM SalesHistory sh

WHERE SalePrice <

(
      SELECT AVG(SalePrice)

      FROM SalesHistory shi
)

你可以使用EXISTS操作来决定,是否对某一个单独的记录使用UPDATE或者INSERT语句,就像下面的例子一样:

IF EXISTS

(

      SELECT * FROM SalesHistory

      WHERE SaleDate = '1/1/2001' AND

            Product = 'Computer' AND 

            SalePrice = 1000

)

      UPDATE TOP(1) SalesHistory

      SET SalePrice = 1100

      WHERE SaleDate = '1/1/2001' AND

            Product = 'Computer' AND 

            SalePrice = 1000
ELSE
      INSERT INTO SalesHistory

      (Product, SaleDate, SalePrice)

      VALUES

      ('Computer', '1/1/2001', 1100)
出处:78软件收集整理 作者:不详
评论人 评论内容摘要(共 0 条,查看完整内容) 得分 0 发表时间
 热点文章
·Windows XP中快速转换FAT32至NTFS
·Windows 98全方位优化
·直接用WIN2000自带的NAT的实现端口映射的方法
·Ghost 2003成功克隆Windows XP
·全面提速Windows XP
·Windows XP优化技巧
·windows XP 系统服务“关闭”详细列表,释放N多内..
·Windows XP关机技巧二则
·Adobe Photoshop 鲜为人知的75个技巧[酷]
·给Windows XP减减肥
 推荐文章
·用好你的Windows安全模式
·想慢都不行:WinXP急速启动最新技巧
·各种ADSL路由设置
·解决 Windows XP_SP2 验证码无法显示的补丁!
·Windows Server 2003在线更新的补丁!
78软件站 版权所有 Copyright© 2003-2008 Www.78soft.COM, All Rights Reserved. Powered By 78软件站 鄂ICP备05000648号