SQL 递归查询关联节点 with as
2013-10-28 14:54
155 查看
个人觉得这个SQL语句不错,可以总结下来,待以后使用
一.用with 可以查询数据库的关联节点。
1.数据库表:
id name
parentId
1 | 公司 | 0 |
2 | 张一 | 1 |
3 | 李一 | 1 |
4 | 张二 | 2 |
5 | 张三 | 2 |
6 | 张四 | 4 |
7 | 张五 | 6 |
NULL | NULL | NULL |
with cr(username,userid)
as(
select a.username,a.userid from userTB a where parentId='2'
union all
select c.username,c.userid from userTB c
inner join cr on c.parentId=cr.userid
)
select * from cr
3.对上述SQL的解释
cr:表示一个临时表名
4.语法:
with 临时表名 as :可以定义一个SQL片段,该片段可以被整个语句用到,特别是对于union all特别有用,可以提供一部分数据,因为union all的每个部分都一样,则每个部门如果都去执行一遍的,所以可以使用他只执行一遍,如果with的表被执行大于两次时,会将此表保存成一个临时表,否则不会,这样会大大提高效率
5.注意事项:
with as(CTE)属于sql server2005及以上版本才拥有的功能,如果在sql server 2000上执行,会提示错误“WITH附近有语法错误”。
相关文章推荐
- SQL 语句递归查询 With AS 查找所有子节点
- SQL 语句递归查询 With AS 查找所有子节点
- SQL 语句递归查询 With AS 查找 所有 子节点
- SQL 语句递归查询 With AS 查找所有子节点
- T-Sql 递归查询(给定节点查所有父节点、所有子节点的方法)
- T-Sql 递归查询(给定节点查所有父节点、所有子节点的方法)
- T-Sql 递归查询(给定节点查所有父节点、所有子节点的方法)
- T-Sql 递归查询(给定节点查所有父节点、所有子节点的方法)
- sql 递归查询分类树列表with as
- SQL 递归查询所有父子节点
- T-Sql 递归查询(给定节点查所有父节点、所有子节点的方法)
- [MSSQL]超简便的递归查询,获取父节点,通用于sql 2000
- T-Sql 递归查询(给定节点查所有父节点、所有子节点的方法)
- SQL 递归查询(根据指定的节点向上获取所有父节点,向下获取所有子节点)
- SQL中使用WITH AS(2)---递归查询
- T-Sql 递归查询(给定节点查所有父节点、所有子节点的方法)
- T-Sql 递归查询(给定节点查所有父节点、所有子节点的方法)
- SQL三表关联
- Web数据库SQL命令,数据库创建_增删改查_表与表之间的关联
- 日期关联取最近日期的SQL