SQL 查询语句

gwf25sz 2010-08-13 09:57:19
select * from News_LCType


结果:

ID ParentID
----------- -----------
1 0
3 0
4 3
5 3
6 1

现在想要这样的结果:

ID ParentID
----------- -----------
1 0
6 1
3 0
4 3
5 3
(树型结构)

不想用写死的方式比如:
select ID,ParentID from News_LCType where id = 1 UNION ALL
select ID,ParentID from News_LCType where ParentID = 1 UNION ALL
select ID,ParentID from News_LCType where id = 3 UNION ALL
select ID,ParentID from News_LCType where ParentID = 3



请问这个语句该怎么写????
...全文
98 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wandola001 2010-08-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 duanzhi1984 的回复:]
SQL code
典型在树形排序:

create table #t(id int,parentid varchar(10))
insert into #t
select 1, 0 union all
select 3 ,0union all
select 4 ,3union all
select 5 ,3union all
select 6 ,1


--查询处理的代码……
[/Quote]


力顶~!
这代码写的够精简,够牛X
受教了
飘零一叶 2010-08-13
  • 打赏
  • 举报
回复
学习了,哈哈.....
cheng20100915 2010-08-13
  • 打赏
  • 举报
回复
学习了
hao1hao2hao3 2010-08-13
  • 打赏
  • 举报
回复
数据库是2005吗?可以用公用表表达式

搜索关键字:cte


;with cte as
(
select * from News_LCType where parentid = 0
union all
select * from News_LCType as a join cte on a.parentid=cte.id
)
select * from cte


很值得研究。

gwf25sz 2010-08-13
  • 打赏
  • 举报
回复
感谢8楼高手 ~~~~
谢谢
可用!!!
飘零一叶 2010-08-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 duanzhi1984 的回复:]
SQL code
典型在树形排序:

create table #t(id int,parentid varchar(10))
insert into #t
select 1, 0 union all
select 3 ,0union all
select 4 ,3union all
select 5 ,3union all
select 6 ,1


--查询处理的代码……
[/Quote]
UP!!!
duanzhi1984 2010-08-13
  • 打赏
  • 举报
回复
典型在树形排序:

create table #t(id int,parentid varchar(10))
insert into #t
select 1, 0 union all
select 3 ,0union all
select 4 ,3union all
select 5 ,3union all
select 6 ,1


--查询处理的代码
SELECT *
FROM #t a
LEFT JOIN #t b ON a.parentid=b.id
ORDER BY CASE
WHEN b.parentid IS NULL THEN a.id
WHEN b.parentid=0 THEN b.id
ELSE b.parentid END,
CASE
WHEN b.parentid=0 THEN a.id
ELSE a.parentid END,
a.id
gwf25sz 2010-08-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zsh0809 的回复:]
引用 5 楼 gwf25sz 的回复:
晕啊~~~~~~~~~~~~~~~~


你到底想要什么?表述清楚些,只是提前那一行数据?
[/Quote]

ParentID = 0的为支节点 否则为叶节点

现在要这样:
支节点 (ID = 1)
叶节点 (ParentID = 支节点ID) --------- 有多少查多少

支节点 (ID = 3)
叶节点 (ParentID = 支节点ID) --------- 有多少查多少

称为树型
「已注销」 2010-08-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 gwf25sz 的回复:]
晕啊~~~~~~~~~~~~~~~~
[/Quote]

你到底想要什么?表述清楚些,只是提前那一行数据?
飘零一叶 2010-08-13
  • 打赏
  • 举报
回复
还是没整明白...
xlh0053 2010-08-13
  • 打赏
  • 举报
回复
不知道,帮顶
999朵玫瑰 2010-08-13
  • 打赏
  • 举报
回复
学习一下

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧