首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

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

2012-09-07 
T-SQL中apply,存在的理由,为什么要有他?/*apply的用法为什么要用他?感觉还没有关联好用呢*/--select c.cus

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 tid=@tid      )      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 行受影响) 

热点排行