SQL 查询CET使用领悟

  用到sql的遍历循环查询,如果不考虑用CET,估计又到了自己造轮子的时代了,现在觉得sql的CET确实是个好东西,针对SQL的递归查询,很是不错的方法;

with etcRecommandINfo2(c_PRecommendNo,c_RecommendName,c_RecommendNo,i_Rtype,c_ServerDir,c_Pic_Recommend,tLevel)
as
(
    select c_PRecommendNo,c_RecommendName,c_RecommendNo,i_Rtype,c_ServerDir,c_Pic_Recommend,0 AS tLevel  from Recommend    where c_RecommendNo='RC20150514142804'
    union all
    select rd.c_PRecommendNo,rd.c_RecommendName,rd.c_RecommendNo,rd.i_Rtype,rd.c_ServerDir,rd.c_Pic_Recommend,et.tLevel+1 from Recommend rd 
    inner join etcRecommandINfo2 et on et.c_PRecommendNo=rd.c_RecommendNo 
)
select c_PRecommendNo,c_RecommendName,c_RecommendNo,i_Rtype,c_ServerDir,c_Pic_Recommend,tLevel from etcRecommandINfo2;

看完这段代码,你也许醉了,其实这段代码,主要就是用到了CET,先说说这个用到查询的这个表:

c_RecommendNo
标识表中唯一
c_PRecommendNo
标识该条数据的上一条数据

这是主要的2个字段,这两个字段是递归的根源。

这个语句可以按3步来理解,如下图:

1、查询基础数据;

2、基础数据关联条件,查询全部数据;

3、将查询的数据,通过with归类显示处理;

*************************************************************

**************************************************************

备注:语句2中on后面语句也很关键,=左右的顺序不能互换,互换之后,查询的结果也不相同;记得理解的顺序很关键,理解了顺序,就能查询自己想要的结果;

CET的详细内容可以参考链接:

http://www.cnblogs.com/kissdodog/archive/2013/06/24/3153012.html

原文地址:https://www.cnblogs.com/xibei666/p/4503765.html