TSQL技巧(一) -- 子查询(subquery)

简介: 子查询分为独立子查询和相关子查询 什么时候该利用子查询,我们可以先来看下面几个实际的例子。   我们以Northwind数据库为例   1. 返回在每月最后实际订单日期发生的订单(独立子查询)    思路:由于每个月最后实际订单最后一天是唯一的,所以我们             可以利用内层查询分组来实现。

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

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

 

我们以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)

 

 

 

 

目录
相关文章
|
4月前
|
SQL 数据库
SQL 查询优化指南:SELECT、SELECT DISTINCT、WHERE 和 ORDER BY
SQL的SELECT语句用于从数据库中选择数据。SELECT语句的基本语法如下:
55 1
|
5月前
|
SQL
在sql 里嵌套查询时,查询条件带有instr时报错
在sql 里嵌套查询时,查询条件带有instr时报错
48 1
|
8月前
|
SQL 机器学习/深度学习 数据可视化
SQL语法:浅析select之七大子句
SQL语法:浅析select之七大子句
|
Oracle 关系型数据库 MySQL
Mysql数据库,子查询,union,limit篇
参数 expression1, expression2, ... expression_n: 要检索的列。 tables: 要检索的数据表。 WHERE conditions: 可选, 检索条件。 DISTINCT: 可选,删除结果集中重复的数据。默认情况下 UNION 操作符已经删除了重复数据,所以 DISTINCT修饰符对结果没啥影响。 ALL: 可选,返回所有结果集,包含重复数据。 案例:查询工作岗位为MANAGER或者SALESMAN的员工信息(使用union)
115 0
|
SQL Oracle 关系型数据库
SQL 连接查询、子查询、union
SQL 连接查询、子查询、union
222 0
SQL 连接查询、子查询、union
SQL语句中‘相关子查询’与‘非相关子查询’有什么区别?
SQL语句中‘相关子查询’与‘非相关子查询’有什么区别?
132 0
SELECT 语句中的 子查询(Sub Query)
SELECT 语句中的子查询 子查询(Sub Query)或者说内查询(Inner Query),也可以称作嵌套查询(Nested Query),是一种嵌套在其他 SQL 查询的 WHERE 子句中的查询。
1211 0
|
SQL
SQL在INNER JOIN时,也可以将子查询加入进来
这个语法有点神奇,记下。 但觉得用处有限吧。 mysql> SELECT a.account_id, a_cust_id, a.open_date, a.product_cd -> FROM account AS a INNER JOIN -> (SELECT emp_...
2142 0