怎样使用SQLServer数据库嵌套子查询

怎样使用SQLServer数据库嵌套子查询,第1张

怎样使用SQLServer数据库嵌套子查询,第2张

许多SQL Server程序员对子查询的使用感到困惑,尤其是嵌套子查询(即子查询包含子查询)。现在,让我们回到源头来探讨这个问题。

有两种子查询类型:标准和相关。标准查询执行一次,结果反馈给父查询。相关的子查询每行执行一次,并由父查询检索。在本文中,我将关注嵌套子查询(稍后我将介绍相关的子查询)。

想象一下这个问题:您想要生成一个销售平垫圈的销售人员列表。你需要的数据分散在四个表中:Person。联系人(人。联系)、人力资源。员工(人力资源。员工)、销售。SalesOrderHeader(销售。salesorderheader),销售。销售订单明细(销售。销售订单明细)。在SQL Server中,您从外向内编写程序,但是从内向外开始思考是非常有帮助的,也就是说,您可以一次解决一个所需的语句。

如果从里到外写,可以查查销量。SalesOrderDetail表并匹配LIKE语句中的ProductNumber值。把这些线和销售连接起来。SalesOrderHeader表,您可以获得销售人员id(SalesPersonIDs)。然后使用SalesPersonID连接SalesPersonID表。最后,连接人。ContactID为的联系人表。

以下是引号片段:
使用AdventureWorks
GO
SELECT DISTINCT c . last name,c.FirstName
FROM Person。联系c加入人力资源。员工e
ON e . contact id = c . contact id WHERE employee id IN
(从Sales中选择SalesPersonID
。SalesOrderHeader
WHERE Sales orderid IN
(SELECT Sales orderid
FROM Sales。SalesOrderDetail
WHERE product id IN
(SELECT product id
FROM Production。Product p
其中ProductNumber类似于“fw %”)));


这个例子揭示了SQL Server的几个奇妙之处。可以看到IN()参数可以用来代替SELECT语句。在本例中,有两个应用程序,因此创建了一个嵌套子查询。

我是标准化的爱好者,尽管我不接受它荒谬的长度。因为标准化有各种各样的查询,所以增加了复杂性。在这些情况下,子查询非常有用,嵌套子查询甚至更有用。

当你需要的问题分散在很多表格里的时候,你必须把它们重新放在一起。此时,您可能会发现嵌套子例程非常有用。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 怎样使用SQLServer数据库嵌套子查询

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情