两张表经过顾客ID(CustID)进行关联,分别为顾客表(顾客ID

CustCompany)和顾客订单表(顾客ID,CustCompany)和顾客订单表(顾客ID

图片 1

 1 --为每个客户返回其订单ID最大的订单
 2 
 3 SELECT OutQueryOrders.OrderID,OutQueryOrders.CustID,YEAR(OutQueryOrders.OrderDate) AS OrderDateYear
 4 FROM Orders AS OutQueryOrders
 5 WHERE OutQueryOrders.OrderID=
 6 (
 7    SELECT MAX(InnerQueryOrders.OrderID)
 8    FROM Orders InnerQueryOrders
 9    WHERE OutQueryOrders.CustID=InnerQueryOrders.CustID
10 )
1 DECLARE @MaxOrderID AS INT=
2 (
3    SELECT MAX(OD.OrderID)
4    FROM Orders AS OD
5 )
6 
7 SELECT *
8 FROM Orders 
9 WHERE Orders.OrderID=@MaxOrderID

1.二 
本篇作品内容概要

图片 2

图片 3

 关于子查询,还有多数内容,如重临前后记录查询,接二连三聚合,行为不当等,但那部分内容属于子查询的中高档部分,打算放在【SqlServer种类】中高级部分来与我们大快朵颐。

询问结果:

图片 4

结果分析

3.3  小结

3.3  小结

施行查询语句:

a.相关子查询内部查询依赖于外部查询,不能独立运行;
b.相关子查询内部查询中,受限制于外部查询的条件,如上述例子中的WHERE之后的条件;
c.在逻辑上,子查询会为每个外部查询单独计算一次;
d.多值子查询,一般与谓词连用,如IN,NOT IN,EXISTS等;
e.在子查询中,一般单值和多值是混合用,如常见与BETWEEN......AND.....连用等;

a.期望结果

壹.3本章测试样表和sql

图片 5

结果分析:

a.期望结果

1 --返回Orders表中订单ID最大的记录
2 SELECT OutQueryOrders.OrderID,OutQueryOrders.CustID,YEAR(OutQueryOrders.OrderDate) AS OrderDateYear
3 FROM Orders AS OutQueryOrders
4 WHERE OutQueryOrders.OrderID=
5 (
6    SELECT MAX(InnerQueryOrders.OrderID)
7    FROM Orders InnerQueryOrders
8 )

图片 6

图片 7

b.查询语句分析

3   相关子查询

询问结果:

图片 8

标题:再次回到订单表中订单ID>5的顾客消息

图片 9

1 SELECT *
2 FROM Orders

 

结果分析:

1   概述

 

图片 10

二.二  独立子查询

办法一:标量单值子查询

【0二】Microsoft  SqlServer
2008本领内幕:T-SQL 查询

1 SELECT *
2 FROM Customers
a.每个子查询均有所属的外部查询;
b.独立子查询独立于其外部查询;
c.可以把独立子查询单独运行;
d.独立子查询在执行外部查询之前先执行一次,接着外部查询再使用子查询的结果继续进行查询;
e.标量子查询只返回单个值,不管其是否是独立子查询;
f.标量子查询可以出现在外部查询中期望使用单个值的任何地方(WHERE、SELECT等)
g.算术运算符(>,>=,<,<=,!=,=)其后只能为单值;
h.如果标量子查询没有返回任何值,其结果就转换为NULL,和NULL进行比较得到的是UNKNOWN,查询过滤器不会返回任何让过滤表达式计算结果为UNKOWN的行;
i.多值子查询,一般与谓词连用,如IN,NOT IN,EXISTS等;
j.在子查询中,一般单值和多值是混合用,如常见与BETWEEN......AND.....连用等;

方法2:采纳变量

1.二 
本篇小说内容概要

结果分析:

图片 11

图片 12

图片 13

查询结果:

肆   子查询拓展

a.期望结果

询问结果:

事务场景:

 1 --为每个客户返回其订单ID最大的订单
 2 
 3 SELECT OutQueryOrders.OrderID,OutQueryOrders.CustID,YEAR(OutQueryOrders.OrderDate) AS OrderDateYear
 4 FROM Orders AS OutQueryOrders
 5 WHERE OutQueryOrders.OrderID=
 6 (
 7    SELECT MAX(InnerQueryOrders.OrderID)
 8    FROM Orders InnerQueryOrders
 9    WHERE OutQueryOrders.CustID=InnerQueryOrders.CustID
10 )

a.期望结果

【01】Microsoft  SqlServer
贰零零九才干内幕:T-SQL 语言功底

图片 14

询问结果:

三.1 
SQL示例及示范结果

b.查询语句分析

【02】Microsoft  SqlServer
二零零六本事内幕:T-SQL 查询

a.相关子查询内部查询依赖于外部查询,不能独立运行;
b.相关子查询内部查询中,受限制于外部查询的条件,如上述例子中的WHERE之后的条件;
c.在逻辑上,子查询会为每个外部查询单独计算一次;
d.多值子查询,一般与谓词连用,如IN,NOT IN,EXISTS等;
e.在子查询中,一般单值和多值是混合用,如常见与BETWEEN......AND.....连用等;

  
子查询和表连接,首假如针对两张及以上表之间涉及关系实行查询。子查询,按是或不是单身划分,分为独立子查询和相关子查询;按内部查询重回是不是为单值,分为单值子查询(注意:应了解单值子查询和标量子查询关系)和多值子查询;如下表格内容为按子查询是不是单身来划分的。

 1 USE WJM_CHildQuery
 2 
 3 --CREATE TABLE Customers
 4 CREATE TABLE Customers
 5 (
 6    CustID INT IDENTITY(1,1)  NOT NULL PRIMARY KEY,  --顾客ID
 7    CustName  VARCHAR(50),--顾客姓名
 8    CustCompany VARCHAR(50) --顾客公司
 9 )
10 
11 --Initial Customers
12 
13 INSERT INTO Customers VALUES('赵武','A')
14 INSERT INTO Customers VALUES('刘杨','B')
15 INSERT INTO Customers VALUES('张永为','C')
16 INSERT INTO Customers VALUES('李龙飞','D')
17 INSERT INTO Customers VALUES('邓华','E')
18 INSERT INTO Customers VALUES('张涛明','F')

标题:重回订单表中订单ID>五的主顾音信

查询结果为:

b.查询语句分析

图片 15

5   参考文献

图片 16

 1 USE WJM_CHildQuery
 2 
 3 CREATE TABLE Orders
 4 (
 5   OrderID INT IDENTITY(1,1) PRIMARY KEY NOT NULL, --订单ID
 6   CustID INT NOT NULL,  --顾客ID
 7   OrderDate DATE --订单日期
 8 ) 
 9 
10 --Initial Orders
11 
12 INSERT INTO Orders VALUES(1,'2015-06-25')
13 INSERT INTO Orders VALUES(2,'2017-06-03')
14 INSERT INTO Orders VALUES(3,'2016-04-25')
15 INSERT INTO Orders VALUES(4,'2016-03-04')
16 INSERT INTO Orders VALUES(5,'2013-03-04')
17 INSERT INTO Orders VALUES(6,'2017-01-01')
18 INSERT INTO Orders VALUES(2,'2016-08-25')
19 INSERT INTO Orders VALUES(5,'2016-12-25')

图片 17

询问结果:

2  独立子查询

图片 18

1 --返回Orders表中订单ID最大的记录
2 SELECT OutQueryOrders.OrderID,OutQueryOrders.CustID,YEAR(OutQueryOrders.OrderDate) AS OrderDateYear
3 FROM Orders AS OutQueryOrders
4 WHERE OutQueryOrders.OrderID=
5 (
6    SELECT MAX(InnerQueryOrders.OrderID)
7    FROM Orders InnerQueryOrders
8 )

询问结果为:

1 --创建子查询数据库WJM_ChildQuery
2 IF DB_ID('WJM_CHildQuery') IS NOT NULL
3    DROP DATABASE WJM_ChildQuery
4    GO
5    CREATE DATABASE WJM_ChildQuery
1 --返回订单表中订单ID>5的顾客信息
2 SELECT C.CustID,C.CustName,C.CustCompany
3 FROM Customers AS C
4 WHERE C.CustID  IN
5 (
6     SELECT Orders.CustID
7     FROM Orders
8     WHERE Orders.OrderID>5
9 )

有两张表,分别为顾客表(顾客ID,顾客姓名,顾客集团),即Customers(CustID,CustName,CustCompany)和顾客订单表(顾客ID,订单ID,订单日期),即Orders(CustID,OrderID,OrderDate),两张表经过顾客ID(CustID)进行关联。

标题:在订单表Orders表中,为种种客户重回其订单ID最大的订单

2.二  独立子查询

1.1 
已发布【SqlServer系列】文章

1 SELECT *
2 FROM Orders

图片 19

图片 20

2.3  小结

(一)创立子查询DB:WJM_CHildQuery

SQL语句分别如下:

(二)创立Customers表并初叶化

5   参考文献

图片 21

主意1:标量单值子查询

图片 22

图片 23

2.3  小结

结果分析:

询问结果:

图片 24

执行查询语句:

  
子查询和表连接,首即使对准两张及以上表之间关系关系进行查询。子查询,按是或不是单身划分,分为独立子查询和相关子查询;按内部查询再次回到是还是不是为单值,分为单值子查询(注意:应领悟单值子查询和标量子查询关系)和多值子查询;如下表格内容为按子查询是还是不是单身来划分的。

b.查询语句分析

b.查询语句分析

6   版权

1 SELECT *
2 FROM Customers

 

叁.二  示例结果分析

 1 USE WJM_CHildQuery
 2 
 3 --CREATE TABLE Customers
 4 CREATE TABLE Customers
 5 (
 6    CustID INT IDENTITY(1,1)  NOT NULL PRIMARY KEY,  --顾客ID
 7    CustName  VARCHAR(50),--顾客姓名
 8    CustCompany VARCHAR(50) --顾客公司
 9 )
10 
11 --Initial Customers
12 
13 INSERT INTO Customers VALUES('赵武','A')
14 INSERT INTO Customers VALUES('刘杨','B')
15 INSERT INTO Customers VALUES('张永为','C')
16 INSERT INTO Customers VALUES('李龙飞','D')
17 INSERT INTO Customers VALUES('邓华','E')
18 INSERT INTO Customers VALUES('张涛明','F')

b.查询语句分析

二  独立子查询

 

SQL语句分别如下:

a.期望结果

 

图片 25

图片 26

(一)创立子查询DB:WJM_CHildQuery

1 DECLARE @MaxOrderID AS INT=
2 (
3    SELECT MAX(OD.OrderID)
4    FROM Orders AS OD
5 )
6 
7 SELECT *
8 FROM Orders 
9 WHERE Orders.OrderID=@MaxOrderID

3.1 
SQL示例及示范结果

  • 多谢您的开卷,若有不足之处,应接指教,共同学习、共同升高。
  • 博主网站:http://www.cnblogs.com/wangjiming/。
  • 极少一些小说利用读书、参考、引用、抄袭、复制和粘贴等多样措施结合而成的,大多数为原创。
  • 如您喜欢,麻烦推荐一下;如你有新主张,招待建议,邮箱:二零一五17772八@qq.com。
  • 能够转发该博客,但无法不著名博客来源。

询问结果:

a.期望结果

 1 USE WJM_CHildQuery
 2 
 3 CREATE TABLE Orders
 4 (
 5   OrderID INT IDENTITY(1,1) PRIMARY KEY NOT NULL, --订单ID
 6   CustID INT NOT NULL,  --顾客ID
 7   OrderDate DATE --订单日期
 8 ) 
 9 
10 --Initial Orders
11 
12 INSERT INTO Orders VALUES(1,'2015-06-25')
13 INSERT INTO Orders VALUES(2,'2017-06-03')
14 INSERT INTO Orders VALUES(3,'2016-04-25')
15 INSERT INTO Orders VALUES(4,'2016-03-04')
16 INSERT INTO Orders VALUES(5,'2013-03-04')
17 INSERT INTO Orders VALUES(6,'2017-01-01')
18 INSERT INTO Orders VALUES(2,'2016-08-25')
19 INSERT INTO Orders VALUES(5,'2016-12-25')

有两张表,分别为顾客表(顾客ID,顾客姓名,顾客公司),即Customers(CustID,CustName,CustCompany)和消费者订单表(顾客ID,订单ID,订单日期),即Orders(CustID,OrderID,OrderDate),两张表经过顾客ID(CustID)进行关联。

主题素材:请用两种方法重临Orders表中的订单ID最大的订单音信。

肆   子查询拓展

 

图片 27

方法2:采取变量

查询结果为:

结果分析

b.查询语句分析

 (三)创制Orders表并伊始化

图片 28

三   相关子查询

 关于子查询,还有诸多剧情,如再次来到前后记录查询,接二连三聚合,行为不当等,但这有些剧情属于子查询的中高端部分,希图放在【SqlServer体系】中高端部分来与我们享受。

主题素材:在订单表Orders表中,为种种客户再次回到其订单ID最大的订单

1.1 
已发布【SqlServer系列】文章

a.期望结果

a.每个子查询均有所属的外部查询;
b.独立子查询独立于其外部查询;
c.可以把独立子查询单独运行;
d.独立子查询在执行外部查询之前先执行一次,接着外部查询再使用子查询的结果继续进行查询;
e.标量子查询只返回单个值,不管其是否是独立子查询;
f.标量子查询可以出现在外部查询中期望使用单个值的任何地方(WHERE、SELECT等)
g.算术运算符(>,>=,<,<=,!=,=)其后只能为单值;
h.如果标量子查询没有返回任何值,其结果就转换为NULL,和NULL进行比较得到的是UNKNOWN,查询过滤器不会返回任何让过滤表达式计算结果为UNKOWN的行;
i.多值子查询,一般与谓词连用,如IN,NOT IN,EXISTS等;
j.在子查询中,一般单值和多值是混合用,如常见与BETWEEN......AND.....连用等;

图片 29

图片 30

图片 31

图片 32

进行查询语句:

 (3)创造Orders表并开端化

(2)制造Customers表并开端化

二.一 
独立标量子查询

一.叁本章测试样表和sql

a.期望结果

二.1 
独立标量子查询

实施查询语句:

1   概述

询问结果为:

b.查询语句分析

6   版权

标题:请用二种方法返回Orders表中的订单ID最大的订单新闻。

  • 感激您的读书,若有不足之处,应接指教,共同学习、共同升高。
  • 博主网站:http://www.cnblogs.com/wangjiming/。
  • 极少一些小说利用读书、参考、引用、抄袭、复制和粘贴等三种措施组成而成的,半数以上为原创。
  • 如你喜欢,麻烦推荐一下;如您有新主见,应接提议,邮箱:二〇一五177728@qq.com。
  • 能够转发该博客,但必须有名博客来源。
1 --创建子查询数据库WJM_ChildQuery
2 IF DB_ID('WJM_CHildQuery') IS NOT NULL
3    DROP DATABASE WJM_ChildQuery
4    GO
5    CREATE DATABASE WJM_ChildQuery
1 --返回订单表中订单ID>5的顾客信息
2 SELECT C.CustID,C.CustName,C.CustCompany
3 FROM Customers AS C
4 WHERE C.CustID  IN
5 (
6     SELECT Orders.CustID
7     FROM Orders
8     WHERE Orders.OrderID>5
9 )

【0壹】Microsoft  SqlServer
二零零六本事内幕:T-SQL 语言功底

作业场景:

三.贰  示例结果分析