sqlserver数据库:使用SQL Server数据库嵌套子查询的思路方法来源: 发布时间:星期日, 2009年9月6日 浏览:65次 评论:0
很多SQL Server员对子查询(subqueries)使用感到困惑尤其对于嵌套子查询(即子查询中包含个子查询)现在就让我们追本溯源地探究这个问题
有两种子查询类型:标准和相关标准子查询执行次结果反馈给父查询相关子查询每行执行次由父查询找回在本文中我将重点讨论嵌套子查询(nested subqueries)(我将在以后介绍相关子查询) 试想这个问题:你想生成个卖平垫圈销售人员列表你需要数据分散在 4个表格中:人员.联系方式(Person.Contact)人力资源.员工(HumanResources.Employee)销售.销售订单标题(Sales.SalesOrderHeader)销售.销售订单详情(Sales.SalesOrderDetail)在SQL Server中你从内压式(outside-in)写但从外压式(inside-out)开始考虑非常有帮助即可以次解决需要个语句 如果从内到外写起可以检查Sales.SalesOrderDetail表格在LIKE语句中匹配产品数(ProductNumber)值你将这些行和Sales.SalesOrderHeader表格连接从中可以获得销售人员IDs(SalesPersonIDs)然后使用SalesPersonID连接SalesPersonID表格最后使用ContactID连接Person.Contact表格 复制代码 代码如下: USE AdventureWorks ; GO SELECT DISTINCT c.LastName, c.FirstName FROM Person.Contact c JOIN HumanResources.Employee e ON e.ContactID = c.ContactID WHERE EmployeeID IN (SELECT SalesPersonID FROM Sales.SalesOrderHeader WHERE SalesOrderID IN (SELECT SalesOrderID FROM Sales.SalesOrderDetail WHERE ProductID IN (SELECT ProductID FROM Production.Product p WHERE ProductNumber LIKE'FW%'))); GO 这个例子揭示了有关SQL Server几个绝妙事情你可以发现可以用IN参数替代SELECT 语句在本例中有两次应用因此创建了个嵌套子查询 我是标准化(normalization)发烧友尽管我不接受其荒谬长度由于标准化具有各种查询而增加了复杂性在这些情况下子查询就显得非常有用嵌套子查询甚至更加有用 当你需要问题分散于很多表格中时你必须再次将它们拼在起这时你可能发现嵌套子就很有用 0
相关文章
读者评论发表评论 |