SQL Server数据库的嵌套子查询

yjlqq

yjlqq

2016-02-19 21:19

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

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

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

  试想这个问题:你想生成一个卖平垫圈的销售人员列表。你需要的数据分散在四个表格中:人员.联系方式(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 ;

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

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

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

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

SQL Server数据库的嵌套子查询

编程语言 网络编程
SQL Server数据库的嵌套子查询

如何使用SQL Server数据库嵌套子查询

SQLServer
如何使用SQL Server数据库嵌套子查询

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

使用SQL Server数据库嵌套子查询的方法

编程语言 网络编程
使用SQL Server数据库嵌套子查询的方法

优化SQL Server数据库查询方法

编程语言 网络编程
优化SQL Server数据库查询方法

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

如何使用SQL Server数据库查询累计值

SQLServer
如何使用SQL Server数据库查询累计值

SQL Server数据库检修

SQLServer
SQL Server数据库检修

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

开启Win8自动备份功能教程

开启Win8自动备份功能教程

网页制作之用Dreamweaver优化网页

网页制作之用Dreamweaver优化网页
下拉加载更多内容 ↓