使用SQL2005 递归查询结合Row_Number()实现完全SQL端树排序
2009-02-05 17:40
453 查看
在实际应用中,我们经常需要用到树型结构功能,数据库结构一般如下
with RelClass
as
(
select * from CMS_Site_Class where ClassID = 1
union all
select csc.* from CMS_Site_Class as csc inner join RelClass as rc on csc.ClassID_Parent = rc.ClassID )
SELECT * from RelClass
将得到ClassID为1的根节点下的所有记录:
-- =============================================
-- Author: <kingimg>
-- Create date: <2009-2-5>
-- Description: <生成已排序的树>
-- =============================================
Create PROCEDURE [dbo].[pCMS_Site_Class__GetList]
@ClassID int
AS
BEGIN
with RelClass
as
(
select *,0 as Level,cast('0' as nvarchar(max)) as treepath from CMS_Site_Class where ClassID = @ClassID
union all
select csc.*,rc.[Level] + 1,rc.treepath + dbo.Lpad(Row_Number() over (order by csc.OrderID desc),8) as treepath from CMS_Site_Class as csc inner join RelClass as rc on csc.ClassID_Parent = rc.ClassID )
SELECT * from RelClass order by treepath
END
执行以上存储过程,最后就输出结果:
这棵树已经从上到下按树结构排好序了!程序里只要原样输出即可!
相关文章推荐
- 使用SQL2005 递归查询结合Row_Number()实现完全SQL端树排序
- (转)使用SQL2005 递归查询结合Row_Number()实现完全SQL端树排序
- 使用SQL2005 递归查询结合Row_Number()实现完全SQL端树排序
- 在sql server2005中使用row_number()实现分页
- 使用ROW_NUMBER()+临时表+While 实现表遍历
- sql server rownumber() 和临时表结合使用案例
- SqlServer中使用row_number() over实现通用的分页存储过程
- sqlserver2005使用row_number() over分页的实现方法
- BroadcastReceiver与Notification的结合使用实现短信完全自主接收
- hive中使用自定义函数(UDF)实现分析函数row_number的功能
- 【SQL】使用ROW_NUMBER() OVER 实现DISTINCT功能
- sql 使用row_number()实现分页查询
- ORCLE使用ROW_NUMBER()实现分页
- hive中使用自定义函数(UDF)实现分析函数row_number的功能
- jQuery+ROW_NUMBER结合Repeater实现简单分页
- C#拼接SQL语句,SQL Server 2005+,多行多列大数据量情况下,使用ROW_NUMBER实现的高效分页排序
- 使用row_number()实现分页实例
- 使用vs2005的rowNumber对数据实现分页的存储过程。
- 用SQL2005的ROW_NUMBER()实现分页功能
- MS-SQL2005使用ROW_NUMBER进行效率分页