易截截图软件、单文件、免安装、纯绿色、仅160KB

sql树查询 - MS-SQL Server / 基础类

表数据
id pid name
1 0 a
2 0 b
3 1 c
4 1 d
5 0 e
6 3 f
7 3 g

要得到 top 5
id pid name top
1 0 a top1
 |-3 1 c
  |-6 3 f
  |-7 3 g
 |-4 1 d
2 0 b top2
5 0 e top3

请问要怎么查
又来,搜索一下精华贴

木有找到
我的思路是这样的
先select top 第一级节点(作为条件)

select 根节点
union all 所有子节点 where(select top)

就没查一条根节点,把他对应的所有子节点插进去(子节点做个函数递归调用)
小弟不才,不懂的写。望高手不吝赐教

SQL code:
----------------------------------------------------------------------------------
-- Author : htl258(Tony)
-- Date : 2010-05-07 21:13:46
-- Version: Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)
-- Jul 9 2008 14:43:34
-- Copyright (c) 1988-2008 Microsoft Corporation
-- Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 3)
-- Blog : http://blog.csdn.net/htl258
----------------------------------------------------------------------------------

--> 生成测试数据表: [tb]
IF OBJECT_ID('[tb]') IS NOT NULL
DROP TABLE [tb]


相关问答:

Asp+sql server问题 - Web 开发 / ASP

我一个项目,有个插入操作,具体是这样的:
我有进货信息表。在出货时选择相应的进货信息,输入数量,选择部门后,点保存按钮,由于网络延时,点一下没有反映,于是用户就又点一下,导致一次插入了两条记录:
例: ......

请教SQL语句查询问题? - MS-SQL Server / 基础类

我想查询出每天数据的最大的一个值。表的格式如下
表名: hisdata
字段 编号 值 状态 时间  
  Id value state dattime  
  101 32.3 0 ......

SQL语句问题 - MS-SQL Server / 疑难问题

请教高手:
 以下是数据库中的三条记录,英文为字段名称  
  id planname TaskBeginTime Status
329 2010年03 ......

mysql区没高手 - MS-SQL Server / 基础类

我觉得mysql和sqlserver有共同的地方:
有个问题是关于表的锁问题:
进程A 进程B
select * from user where id in lock share mode(共享锁)
&nb ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号