博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TSQL技巧(一) -- 子查询(subquery)
阅读量:6418 次
发布时间:2019-06-23

本文共 746 字,大约阅读时间需要 2 分钟。

子查询分为独立子查询和相关子查询

什么时候该利用子查询,我们可以先来看下面几个实际的例子。

 

我们以Northwind数据库为例

 

1. 返回在每月最后实际订单日期发生的订单(独立子查询)

   思路:由于每个月最后实际订单最后一天是唯一的,所以我们

            可以利用内层查询分组来实现。

SELECT OrderID, CustomerID, EmployeeID, OrderDate, RequiredDate 
FROM dbo.Orders
WHERE OrderDate 
IN
  (
SELECT 
MAX(OrderDate) 
   
FROM dbo.Orders
   
GROUP 
BY EmployeeID)

 

2. 为每个员工返回具有最大OrderDate的订单(相关子查询)

   思路:这个问题不能再采用上面相同的策略了,因为几个员工可能会具有相同的订单日期,所以Max(OrderDate)

           可能返回员工A的,也可能是员工B的。

           那么,如何才能让最大订单日期定位到某个员工呢?

           这个时候,我们必须利用到相关子查询,唯一的办法就是将内部查询的EmployeeID与

           外部查询的EmployeeID匹配。

SELECT OrderID, CustomerID, EmployeeID, OrderDate, RequiredDate 
FROM dbo.Orders 
AS O1
WHERE OrderDate 
=
  (
SELECT 
MAX(OrderDate)
   
FROM dbo.Orders 
AS O2
   
WHERE O2.EmployeeID 
= O1.EmployeeID)

 

 

 

 

转载于:https://www.cnblogs.com/davidgu/archive/2012/04/10/2439975.html

你可能感兴趣的文章
There is no accident
查看>>
springboot初学---rabbitmq的使用
查看>>
QTreeWidgetItem和QTreeWidgetItemIterator
查看>>
DevOps
查看>>
vim的纵向编辑(高级用法)
查看>>
再见,OI
查看>>
延时并自动关闭MessageBox
查看>>
指针转换(数组退化为指针的三种情况)
查看>>
C# Reflection exception Method not found
查看>>
Java面试笔记整理4
查看>>
什么是REST架构(转)
查看>>
搭建 Android 开发环境,初试HelloWorld (win7) (下) (转)
查看>>
混合高斯模型(GMM)推导及实现
查看>>
cocos2d-js 3.0rc0加载游戏引擎时长时间黑屏
查看>>
搜索专题练习
查看>>
Django-MTV模型
查看>>
IE9 Windows7 x64
查看>>
xcode 工具栏中放大镜的替换的简单说明
查看>>
C# 语言规范_版本5.0 (第11章 结构)
查看>>
租用游艇
查看>>