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
SQL 查询CET使用领悟的更多相关文章
- SQL常见优化Sql查询性能的方法有哪些?
常见优化Sql查询性能的方法有哪些? 1.查询条件减少使用函数,避免全表扫描 2.减少不必要的表连接 3.有些数据操作的业务逻辑可以放到应用层进行实现 4.可以使用with as 5.使用“临时表”暂 ...
- 记一个简单的sql查询
在我们做各类统计和各类报表的时候,会有各种各样的查询要求.条件 这篇主要记录一个常见的统计查询 要求如下: 统计一段时间内,每天注册人数,如果某天没有人注册则显示为0 现在建个简单的表来试试 建表语句 ...
- Oracle常用SQL查询(2)
三.查看数据库的SQL 1 .查看表空间的名称及大小 select t.tablespace_name, round ( sum (bytes / ( 1024 * 1024 )), 0 ) ts ...
- MySQL GROUP_CONCAT函数使用示例:如何用一个SQL查询出一个班级各个学科第N名是谁?
如何用一个SQL查询出一个班级各个学科第N名是谁? 首先贴出建表语句,方便大家本地测试: -- 建表语句 CREATE TABLE score ( id INT NOT NULL auto_incre ...
- SQL查询第m条到第n条的方法
SQL查询第m条到第n条的方法 如表名为GOOD Sselect top (n-m) * from GOODS where (某一列名) not in (select top m (某一列名) fro ...
- Thinkphp查询 1.查询方式 2.表达式查询 3.快捷查询 4.区间查询 5.组合查询 6.统计查询 7.动态查询 8.SQL 查询
1.使用字符串作为条件查询 $user = M('User'); var_dump($user->where('id=1 AND user="蜡笔小新"')->sele ...
- slick for play 使用原生sql查询以及拼接sql
在play中用函数式框架slick来操作数据库是一件很爽的事情.但有时因为某些特殊场景又不得不用原生的sql了. 还好slick支持这种写法,可以看看slick官方文档,Slick Plain SQL ...
- SQL查询每个表的字段数量
--SQL查询每个表的字段数量select b.[name], count(*) As AllCount,ISNULL(ISNULL(sum(case when isnullable=0 then 1 ...
- SQL查询关于相对路径、矢代、绝对路径、递归、计算列的速度对比跟优化-SOD群记录
1秒查原本递归的查询. 适用于:上下级.多层查询 -- Get childs by parent id WITH Tree AS ( SELECT Id,ParentId FROM dbo.Node ...
随机推荐
- Virtualbox虚拟机安装Ubuntu图文版
这篇文章给大家介绍一下如何在Windows系统下的Virtual Box虚拟机软件中安装Ubuntu系统. 适用环境:Windows系统作为物理机,在此平台上搭建一个Virtual Box虚拟平台,在 ...
- C文件操作(全)
引用自:http://www.cnblogs.com/whiteyun/archive/2009/08/08/1541822.html 文件 文件的基本概念 所谓“文件”是指一组相关数据的有序集合. ...
- The file couldn’t be opened because you don’t have permission to view it
because you dont have permission to view it 解决办法 Project---Build Setting中 修改这一项,变成Default Compiler(A ...
- 基于REST架构的Web Service设计
来自: http://www.williamlong.info/archives/1728.html 先前我曾经介绍过利用Apache Axis实现基于SOAP的Web Service实现技术和相关代 ...
- C语言or和and运算
#include <stdio.h> void main () { printf( | ); printf( | ); printf( | ); printf( | ); printf( ...
- spring mvc静态资源文件的引用
在页面的<title>下 <link rel="stylesheet" href="<%=request.getContextPath()%> ...
- JS生成GUID算法
//算法1 //Js代码 function uuid() { var s = []; var hexDigits = "0123456789abcdef"; for (var i ...
- Java实现Socket5代理服务器
直接贴代码,不解释 1 主服务,用来侦听端口 package org.javaren.proxy; import java.net.ServerSocket; import java.net.Sock ...
- emmet-vim
最近啊,我投奔了网页的开发,看了一本<head first HTML and CSS>的书,感觉非常不错,然后又配置了一些vim里面用到的插件,现在我把学习到的东西记录下来! 首先,我不会 ...
- 文字编辑器kindeditor-min.js的使用
例子: <link rel="stylesheet" type="text/css" href="<?=$WebSiteRootDir?& ...