有层级的,怎么用sql查询返回结果

字段1是字段2的父级,图中左边是原来的样子,要求返回父级字段1值为‘A’下的所有子级,查询后返回图右边的结果。... 字段1是字段2的父级,图中左边是原来的样子,要求返回父级字段1值为‘A’下的所有子级,查询后返回图右边的结果。 展开
 我来答
du瓶邪
2015-07-04 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.7万
采纳率:100%
帮助的人:2950万
展开全部
层次化查询,即树型结构查询,是SQL中经常用到的功能之一,通常由根节点,父节点,子节点,叶节点组成,其语法如下:
SELECT [LEVEL] ,column,expression,...
FROM table_name
[WHERE where_clause]
[[START WITH start_condition] [CONNECT BY PRIOR prior_condition]];
LEVEL:伪列,用于表示树的层次
start_condition:层次化查询的起始条件,指定阶层的根。
prior_condition:定义父节点和子节点之间的关系,PRIOR指定父节点。作为运算符,PRIOR和加(+)减(-)运算的优先级相同。condition ... PRIOR expr = expr 或者 ... expr = PRIOR expr
例:
CONNECT BY last_name != 'King' AND PRIOR employee_id = manager_id ...
CONNECT BY PRIOR employee_id = manager_id and PRIOR account_mgr_id = customer_idSYS_CONNECT_BY_PATH
SYS_CONNECT_BY_PATH这个函数是oracle9i才新提出来的!
它一定要和connect by子句合用!
第一个参数是形成树形式的字段,第二个参数是父级和其子级分隔显示用的分隔符!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-03-20
展开全部
CREATE FUNCTION f_Cid(@ID char(3))
RETURNS @t_Level TABLE(字段1 char(3),字段2 char(3),Level int)
AS
BEGIN
declare @Level int
set @level=1
insert @t_level select 字段1,字段2,@level from tb where 字段1=@id
while @@rowcount>0
begin
set @level=@level+1
insert @t_Level select tb.字段1,tb.字段2,@level
from tb join @t_level t on tb.字段1=t.字段2
where t.level+1=@level
end
return
end

go
select * from dbo.f_Cid('A')
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
远一北07
2013-03-18 · 超过87用户采纳过TA的回答
知道小有建树答主
回答量:276
采纳率:0%
帮助的人:124万
展开全部
Create FUNCTION [dbo].[oriTree](@f2 AS varchar(10))
RETURNS TABLE
AS
RETURN(
WITH Subtree(f1,f2)
AS
(
SELECT f1,f2
FROM t
WHERE f1= @f2
UNION ALL
SELECT f1,f2
FROM t AS e
join Subtree AS es
ON e.f1= es.f2
)
SELECT * FROM Subtree
)

GO

Select * from dbo.oriTree('S')
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-03-16
展开全部
树形结构的查询。
你需要说明一下, 你的数据库是什么数据库。

Oracle 使用 START WITH CONNECT BY 语句实现树状查询

DB2 与 MySQL 使用 CTE 递归处理来实现。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友36a58b2
2013-03-16 · TA获得超过247个赞
知道小有建树答主
回答量:308
采纳率:100%
帮助的人:166万
展开全部
sqlserver 应使用with去实现。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式