SQL Server数据库的嵌套子查询

2016-02-19 21:19 6 1 收藏

下面是个超简单的SQL Server数据库的嵌套子查询教程,图老师小编精心挑选推荐,大家行行好,多给几个赞吧,小编吐血跪求~

【 tulaoshi.com - 编程语言 】

    许多人都对子查询(subqueries)的使用感到困惑,尤其对于嵌套子查询(即子查询中包含一个子查询)。现在,就让我们追本溯源地探究这个问题。

  有两种子查询类型:标准和相关。标准子查询执行一次,结果反馈给父查询。相关子查询每行执行一次,由父查询找回。在本文中,我们将重点讨论嵌套子查询(nested subqueries)。

  试想这个问题:你想生成一个卖平垫圈的销售人员列表。你需要的数据分散在四个表格中:人员.联系方式(Person.Contact),人力资源.员工(HumanResources.Employee),销售.销售订单标题(Sales.SalesOrderHeader),销售.销售订单详情(Sales.SalesOrderDetail)。在SQL Server中,你从内压式(outside-in)写程序,但从外压式(inside-out)开始考虑非常有帮助,即可以一次解决需要的一个语句。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  如果从内到外写起,可以检查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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  FROM Sales.SalesOrderDetail

  WHERE ProductID IN

  (SELECT ProductID

  FROM Production.Product p

  WHERE ProductNumber LIKE'FW%')));

  GO

  这个例子揭示了有关SQL Server的几个绝妙事情。你可以发现,可以用IN()参数替代SELECT 语句。在本例中,有两次应用,因此创建了一个嵌套子查询。

  我是标准化(normalization)的发烧友,尽管我不接受其荒谬的长度。由于标准化具有各种查询而增加了复杂性。在这些情况下子查询就显得非常有用,嵌套子查询甚至更加有用。

  在你需要的问题分散于很多表格中时,你必须再次将它们拼在一起,此时你会发现嵌套子程序确实有用。

来源:http://www.tulaoshi.com/n/20160219/1625894.html

延伸阅读
标签: SQLServer
1.3.4 Profiler SQL Server Profiler 是一个图形化的管理工具用于监督记录和检查SQL Server 数据库的使用情况对系统管理员来说它是一个监视用户活动的间谍 1.3.5 Client Network Utility SQL Server Client Network Utility 用于配置客户端的连接测定网络库的版本信息以及设定本地数据库的相关选项 1.3.6 Server Network Util...
标签: SQLServer
    SQL Server 的升级是一个不可逆的过程,它将对重要的系统和数据文件进行操作,有较大的风险需要格外小心。 2.3.1 升级前的准备工作     升级前为安全起见,必须确保系统能退回到升级前的状态,因此需要做一些额外的工作。其步骤如下:       1、确保操作系...
标签: SQLServer
    数据库对象是数据库的组成部分,常见的有以下几种: 3.3.1 表(Table )     数据库中的表与我们日常生活中使用的表格类似,它也是由行(Row) 和列(Column)组成的。图3-1 中黑底白字的部分称为行,图3-2 中黑底白字的部分称为列。列由同类的信息组成,每列又称为一个字段,每列的标题称...
标签: SQLServer
启动服务器的方法有以下几种: 1、用Enterprise Manager 启动 在Enterprise Manager 的SQL Server Group 中用左键单击所要启动的服务器,或在所要启动的服务器上单击右键后,从快捷菜单中选择“Start” 项,即可启动。 2、用SQL Server Service Manager 启动 启动方法如下:  (1)从菜单中选择Service Manager 选项,启动服务...
标签: SQLServer
在计算机中数据有两种特征:类型和长度。所谓数据类型就是以数据的表现方式和存储方式来划分的数据的种类。     在SQL Server 中每个变量、参数、表达式等都有数据类型。系统提供的数据类型分为几大类,如表4-2 所示。     其中,BIGINT、 SQL_VARIANT 和TABLE 是SQL Server 2000 中新增加的3...

经验教程

900

收藏

100
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部