社区
MS-SQL Server
帖子详情
请问sql server 2005中对一个表进行递归查询用 cte怎么处理?
FEEDOMING
2006-08-15 05:39:00
我看的例子怎么都是对多个表的,
能否从一个表里面进行递归呢?
例如表 tree
id pid text
-- --- ----
1 0 t1
2 0 t2
3 1 t1_1
4 1 t1_2
5 3 t1_1_1
当我选中id =1的时候,如何把id=1下面的所有子节点得到呢?
...全文
227
3
打赏
收藏
请问sql server 2005中对一个表进行递归查询用 cte怎么处理?
我看的例子怎么都是对多个表的, 能否从一个表里面进行递归呢? 例如表 tree id pid text -- --- ---- 1 0 t1 2 0 t2 3 1 t1_1 4 1 t1_2 5 3 t1_1_1 当我选中id =1的时候,如何把id=1下面的所有子节点得到呢?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
FEEDOMING
2006-08-15
打赏
举报
回复
多谢
i9988
2006-08-15
打赏
举报
回复
学习
子陌红尘
2006-08-15
打赏
举报
回复
USE demo
GO
CREATE TABLE CarParts
(
CarID INT NOT NULL,
Part VARCHAR(15),
SubPart VARCHAR(15),
Qty INT
)
GO
INSERT CarParts VALUES (1, 'Body', 'Door', 4)
INSERT CarParts VALUES (1, 'Body', 'Trunk Lid', 1)
INSERT CarParts VALUES (1, 'Body', 'Car Hood', 1)
INSERT CarParts VALUES (1, 'Door', 'Handle', 1)
INSERT CarParts VALUES (1, 'Door', 'Lock', 1)
INSERT CarParts VALUES (1, 'Door', 'Window', 1)
INSERT CarParts VALUES (1, 'Body', 'Rivets', 1000)
INSERT CarParts VALUES (1, 'Door', 'Rivets', 100)
INSERT CarParts VALUES (1, 'Door', 'Mirror', 1)
GO
SELECT * FROM CarParts
GO
WITH CarPartsCTE(SubPart, Qty)
AS
(
-- 固定成员 (AM):
-- SELECT查询无需参考CarPartsCTE
SELECT SubPart, Qty
FROM CarParts
WHERE Part = 'Body'
UNION ALL
-- 递归成员 (RM):
-- SELECT查询参考CarPartsCTE
SELECT CarParts.SubPart, CarPartsCTE.Qty * CarParts.Qty
FROM CarPartsCTE
INNER JOIN CarParts ON CarPartsCTE.SubPart = CarParts.Part
WHERE CarParts.CarID = 1
)
-- 外部查询
SELECT SubPart, SUM(Qty) AS TotalNUM
FROM CarPartsCTE
GROUP BY SubPart
T-
SQL
递归
摘要:在程序
中
调用递归很简单只要在方法
中
调用自身就可以了,可是在数据库操作
中
这种方法并不可行,那么下面就来看一下在
SQL
Server
中
如何书写递归调用。 主要内容: 可以说直到
SQL
Server
2005
之前,
SQL
Server
在运行时级别是没有对递归
处理
的设计的。这也就是说如果你想要实现递归就只能自己控制递归逻辑,将递归转换为循环操作。但是到了
SQL
Server
2005
之后,递归的
在
SQL
2005
中
T-
SQL
的增强部分
(1) Error Handling
SQL
Server
2000没有这种Try-Catch 工具,古人们只好用检查@@Error变量的办法来看看出没出错. 现在技术先进了,这样写就可以了
BEGIN TRY
BEGIN TRANSACTION
一些Code
END TRANSACTION
END TRY
BEGIN CATCH
处理
的Code
END
With As和
表
变量(declare)的详细介绍和区别
一.WITH AS的含义 WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义
一个
SQL
片断,该
SQL
片断会 被整个
SQL
语句所用到。有的时候,是为了让
SQL
语句的可读性更高些,也有可能是在UNION ALL的不同部分,作为提供数 据的部分。 特别对于UNION ALL比较有用。因为UNION ALL的每个部分可能相同,但是如果每个部分都去执行一遍的话,则成本太高, 所以可以使用WITH AS短语,则只要执行一遍即可。如果WITH AS短语所定...
oracle两个
递归查询
,
Sql
语句里的
递归查询
Sql
Server
2005
和Oracle 两个版本
Sql
Server
2005
版本的
Sql
如下:比如
一个
表
,有id和pId字段,id是主键,pid
表
示它的上级节点,
表
结构和数据:CREATE TABLE [aaa]([id] [int] NULL,[pid] [int] NULL,[name] [nchar](10))GOINSERT INTO aaa VALUES(1,0,'a')INSERT INTO aaa VALUES(2,0,'b')IN...
SQL
With As 用法
原文出处:https://www.cnblogs.com/linyijia/p/11238992.html 一.WITH AS的含义 WITH AS短语,也叫做子查询部分(subquery factoring),可以定义
一个
SQL
片断,该
SQL
片断会被整个
SQL
语句用到。可以使
SQL
语句的可读性更高,也可以在UNION ALL的不同部分,作为提供数据的部分。 对于UNION ALL,使用WITH AS定义了
一个
UNION ALL语句,当该片断被调用2次以上,优化器会自动将该WITH AS短语所获取的数
MS-SQL Server
34,876
社区成员
254,635
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章