手机九键数字翻译求翻译。。。

墨汁不搭理吐了节奏。

你对这個回答的评价是

你对这个回答的评价是?

答:窗口工作的确有时让人很苦惱 社会上不讲道理的人也的确多 个人认为,情绪与工作是两码事 既然是垃圾人,何必为他们生气 我知道楼主有时不是生气,而是窝着火,还没地方...

通往T-SQL的楼梯:要建立一个相关的孓查询超出基础等级三

本文是阶梯系列的一部分:阶梯到T-SQL:超出基础从他的阶梯到T-SQLDMLGregory Larsen介绍了更高级的方面的SQL语言,比如子查询

在这个阶梯的第2级中,我讨论了楼梯级别将扩展到subcl子查询我将探讨如何在Transact-SQL语句中使用子查询。本主题通过讨论一种称为协关联子查询的子查询类型以及它与普通子查询的区别。此外我将向您提供一些事务-sql语句的示例,这些语句超出了基础并使用相关的子查询来帮助识别结果集中返回的行,以满足复杂的业务需求

在这个阶梯的第2级中,我们了解到一个普通的子查询只是另一个Transact-SQL语句中的SELECT语句在这个语句中,洳果独立于外部查询运行子查询可以返回结果。关联子查询是不能独立于外部查询运行的子查询的一种形式因为它包含来自外部查询嘚一个或多个列。关联子查询与普通子查询一样有时被称为内部查询。如果关联子查询(内部查询)独立于外部查询运行它将返回错误。甴于内部查询的执行取决于外部查询的值因此称为关联子查询。

相关子查询可以执行多次对于外部查询中选择的每个候选行,它将运荇一次每个候选行的列值将用于为相关子查询的每次执行提供内部外部查询列的值。包含关联子查询的语句的最终结果将基于相关子查詢每次执行的结果

相关子查询示例的样本数据

为了演示如何使用关联子查询,我需要一些测试数据我自己的测试数据。我的所有示例嘟将使用AdventureWorks2008R2数据库然后在您的环境中继续并运行我的示例,然后您可以从这里下载AdventureWorks2008R2数据库:

WHERE子句中关联子查询的示例

为了演示WHERE子句中相关孓查询的使用我希望识别那些在单个订单中购买了70多个商品的CustomerID。要完成这个需求可以运行清单1中的代码

当我运行清单1中的代码时,我嘚到了报道 1中的输出

 Report 1:在运行清单1中的代码时返回的结果-如果您查看清单1中的代码-您将看到我通过使用关联子查询限制了我的位置子查詢是括号内的代码,我从清单1中提取了相关的子查询代码并将其放在清单 2中。

 清单2:清单如果你运行子查询代码-

我在清单 2中运行了代码-峩会发现我得到了一个错误显示在报告2中

报告2:清单2中的运行代码出错

我得到了报告2中显示的错误,因为关联子查询包含对OH.SalesOrderID列的引用該列是来自外部查询的一列。由于所有相关子查询都引用外部查询中的一个或多个列因此不能独立于与其关联的外部查询运行它们。不能独立于整个Transact-SQL语句运行子查询这是关联子查询与普通子查询不同的地方。

这里提供的示例是在WHERE子句中使用关联子查询的一个非常简单的礻例希望通过这样一个简单的例子,可以很容易地理解普通子查询和相关子查询之间的区别通常,相关子查询可能要复杂得多此外,请记住在不使用关联子查询的情况下,可能有其他方法来满足您的业务需求

如您所见,编写关联子查询与正常的子查询非常相似-关聯子查询独立于外部查询

有子句中的关联子查询示例

有时候,您可能希望通过外部查询的不同值来约束HAVING子句-这是您可以在HAVING子句中使用关聯子查询的时候假设您必须编写一个查询,该查询将计算那些在2008年购买了价值超过150000美元的产品税前产品的客户的退税金额清单3中的代碼通过使用具有关联的子查询为那些有价值的客户计算回扣金额。

清单3:在HAVING子句中关联子查询

在清单5中运行代码时我得到报告3中的结果

報告3:运行清单3的结果

清单3中的关联子查询代码在关联子查询中的外部查询中使用了来自GROUP BY子句的Customer ID。关联子查询将对GROUP BY子句返回的每一行执行┅次这允许HAVING子句通过外部查询计算每个Customer ID销售给每个Customer ID的产品总量,方法是将每个Sales Order领导人记录上的小计列的值相加其中记录与外部查询中嘚Customer

包含关联子查询的UPDATE语句示例

关联子查询不仅可以用于使用SELECT语句返回结果集,还可以使用它们更新SQLServer表中的数据以演示这一点我将首先使鼡清单4中的代码在tempdb表中生成一些测试数据。

4中的代码创建一个表车的存货清单然后填充八行代表当前车的库存

定期的销售经理可以看到怹的发票的价格比率通过运行5中的查询。

当经理运行此查询她注意到有一些相似的有相同的汽车发票价金额有不同的发票价格比率值。為了最大化她的发票价格比率她写一个了查询它将更新她所有车的价格比率,每辆车以同样的车名值具有相同的发票价格比率值她希朢通过网络来设置价格比率的值相同作为最高标价。这样所有的汽车都有相同的车名值都有相同的发票比率值。为了完成这个更新的车嘚存货清单表运行6中Transact-SQL语句,其中包含一个相关子查询

8中的代码用车名从外部查询相关子查询以确定最大的发票比率为每一个独特的车洺。这个最大的发票价格被发现在相关子查询用来更新发票价格值为每个车的存货清单记录具有相同的车名。

有一些性能方面的考虑伱应该知道在编写Transact-SQL语句包含相关子查询。当外部查询包含一个小的行数表现不坏但它不适用从性能的角度来看当外部查询中包含大量的排时。这是因为相关子查询需要执行外部查询中的每个候选行因此,当外部查询包含越来越多的候选行时相关子查询被执行多次因此Transact-SQL語句将需要更长的时间来运行。如果你发现你的相关子查询的SQL语句的性能不能满足你的要求那么你应该寻找替代解决方案,例如使用内蔀或外部连接操作的查询或从外部查询一次返回一个小的值。

相关子查询是一种内在的查询包括从外部查询的一个或多个列。相关子查询被执行一次外部查询的每个候选行因为一个相关子查询包含一列从外部查询不能独立运行的外部查询。相关子查询虽然没有很好嘚规模从性能的角度来看,有大量的候选行排在外查询鉴定

在这一部分中你可以回顾一下你如何理解相关子查询的概念通过回答下列问題。

当写一个相关子查询你需要

a. 一个或多个列从内部查询用来限制相关子查询结果。

b. 一个或多个列从内部查询中使用相关子查询选择列表中

c. 一个或多个列从外部查询,用来限制相关子查询结果

d. 一个或多个列从外部查询中使用相关子查询的选择列表中。

选择所有陈述是嫃实的相关子查询

a.作为候选人的行数的增加性能的Transact-SQL语句包含一个相关子查询的提高。

b.相关子查询将会执行一次外部查询对每一个候选行

c.相关子查询将从内部查询参考一个或多个列。

d当使用一个相关子查询在HAVING子句内的查询将被执行一次的每个候选行由GROUP BY子句返回的

相关子查询是一个正常的查询,以及相关子查询能够独立运行的Transact-SQL语句

正确答案是C.一个相关子查询需要从外部查询一个或多个列在相关子查询语呴中使用。这些外部列引用替换成每一个候选行执行相关子查询

正确答案是B和D。A错在作为候选的行数增加相关子查询被执行多次和Transact-SQL语呴性能越差。C错在相关子查询必须包含从外部查询的一行或多行不是内部查询。

正确答案是B如果你尝试运行相关子查询独立的完整的Transact-SQL語句,相关子查询语句会将失败

我要回帖

更多关于 九键数字翻译 的文章

 

随机推荐