关联子查询
1外部查询获得一个记录,然后将该记录传递到内部查询。
2内部查询根据传递的值执行。
3然后内部查询将结果值传回外部查询,而外部查询利用这些值完成处理过程。
哪位兄弟能给个例子讲下?

解决方案 »

  1.   

    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的值最大的那一行数据
      

  2.   

    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.   


    --查询[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
    )
      

  4.   

    先执行外部查询
    3.SELECT MIN(soh2.OrderDate) --最后选择查看OrderDate列
    1.FROM Sales.SalesOrderHeader soh2 --从 Sales.SalesOrderHeader 表里面查找
    2.WHERE soh2.CustomerID = soh1.CustomerID --条件是CustomerID = CustomerID那最后不就是使soh1.OrderDate = 最小的一个日期值
      

  5.   

    1外部查询获得一个记录,然后将该记录传递到内部查询。
    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