select * from tbl a where not exists(select 1 from tbl b where a.col1=b.col1 and a.col2<b.col2) --这个查询就是查询每个col1下面最大的col2的哪一行数据 怎么理解呢:外部查询的结果跟里面的比较,如果满足里面where后面的条件返回1,经过not exists 运算后变成0,外部查询不返回这条数据,相反如果在col1相等的前提下不满足里面查询的where条件,那么就返回0 经过not exists运算后犯规1,外部查询返回这条数据,那么得到的数据都是每个col1下col2的值最大的那一行数据
SELECT soh1.CustomerID,soh1.SalesOrderID,soh1.OrderDate FROM Sales.SalesOrderHeader soh1 WHERE soh1.OrderDate = (SELECT MIN(soh2.OrderDate) FROM Sales.SalesOrderHeader soh2 WHERE soh2.CustomerID = soh1.CustomerID) 讲下这条 谢谢!·
--查询[Sales.SalesOrderHeader] 表里,找到每个CustomerID最小的OrderDate信息 SELECT soh1.CustomerID, soh1.SalesOrderID, soh1.OrderDate FROM Sales.SalesOrderHeader soh1 WHERE soh1.OrderDate = ( --找到最新时间 SELECT MIN(soh2.OrderDate) --关联原表 FROM Sales.SalesOrderHeader soh2 WHERE soh2.CustomerID = soh1.CustomerID )
where not exists(select 1 from tbl b where a.col1=b.col1 and a.col2<b.col2)
--这个查询就是查询每个col1下面最大的col2的哪一行数据
怎么理解呢:外部查询的结果跟里面的比较,如果满足里面where后面的条件返回1,经过not exists
运算后变成0,外部查询不返回这条数据,相反如果在col1相等的前提下不满足里面查询的where条件,那么就返回0 经过not exists运算后犯规1,外部查询返回这条数据,那么得到的数据都是每个col1下col2的值最大的那一行数据
FROM Sales.SalesOrderHeader soh1
WHERE soh1.OrderDate = (SELECT MIN(soh2.OrderDate)
FROM Sales.SalesOrderHeader soh2
WHERE soh2.CustomerID = soh1.CustomerID)
讲下这条
谢谢!·
--查询[Sales.SalesOrderHeader] 表里,找到每个CustomerID最小的OrderDate信息
SELECT
soh1.CustomerID,
soh1.SalesOrderID,
soh1.OrderDate
FROM Sales.SalesOrderHeader soh1
WHERE soh1.OrderDate =
(
--找到最新时间
SELECT MIN(soh2.OrderDate)
--关联原表
FROM Sales.SalesOrderHeader soh2
WHERE soh2.CustomerID = soh1.CustomerID
)
3.SELECT MIN(soh2.OrderDate) --最后选择查看OrderDate列
1.FROM Sales.SalesOrderHeader soh2 --从 Sales.SalesOrderHeader 表里面查找
2.WHERE soh2.CustomerID = soh1.CustomerID --条件是CustomerID = CustomerID那最后不就是使soh1.OrderDate = 最小的一个日期值
2内部查询根据传递的值执行。
3然后内部查询将结果值传回外部查询,而外部查询利用这些值完成处理过程。WHERE soh1.OrderDate =
(SELECT MIN(soh2.OrderDate)
FROM Sales.SalesOrderHeader soh2
WHERE soh2.CustomerID = soh1.CustomerID)这段代码中soh1.CustomerID 是不是对应1
然后内部查询根据1提供的信息找出最小日期所在行 是不是对应2
最后外部查询根据soh1.OrderDate=最小日期找出所在行 是不是对应3