当前位置: 代码迷 >> Sql Server >> T-SQL中apply,存在的理由,为啥要有他
  详细解决方案

T-SQL中apply,存在的理由,为啥要有他

热度:92   发布时间:2016-04-27 11:45:08.0
T-SQL中apply,存在的理由,为什么要有他?
/*apply的用法 为什么要用他?感觉还没有关联好用呢*/
--select c.customerid ,COUNT(o.orderid) from Customers c cross apply Orders o /*outer/cross*/
--where c.city='北京' and c.customerid=o.customerid
--group by c.customerid
--having COUNT(o.orderid)<3
--order by COUNT(o.orderid) asc

------解决方案--------------------
cross apply 后面可以直接跟函数这些 

如果是关联的话 就不可以了 

你可以查下一下联机丛书 CORSS APPLY的用法
------解决方案--------------------
我也很少用这个,但这个还是有用的。
参考:
http://blog.csdn.net/xrongzhen/article/details/6271370
------解决方案--------------------
cross apply 后面可以跟表值函数

SQL code
创建自定义表值函数   获取此id教师下的学生列表  create function getStudent(@tid int)  returns @tmp table(sid int ,tid int,sName varchar(10))  as  begin      with cte(sid, tid, sName)      as      (          select sid, tid, sName from Student where [email protected]      )      insert into @tmp select * from cte      return  end  --查询调用  与上面不用表值函数的写法对照一下,会好理解点  select * from Teacher t cross apply getStudent(t.tid)--在查询中调用表值函数  --查询结果  tid         tName      sid         tid         sName  ----------- ---------- ----------- ----------- ----------  1           li         1           1           zhou  1           li         2           1           wu  2           zhang      3           2           zheng  2           zhang      4           2           wang    (4 行受影响)
  相关解决方案