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

求sql语句

Id parentId
17 16
16 0
15 0
14 1
13 6
12 8
11 1
10 2
9 1
8 0
7 0
6 0
5 1
4 2
3 1
2 0
1 0
parentId为父节点,不为0的是子节点
最终想输出ID的顺序为16,17,15,8,12,7,6,13,2,4,10,1,3,5,9,11,14
其实
就是一个父节点(降序),然后下面是子节点(升序)
然后再父节点(降序),然后下面是子节点(升序)
顶一下,先占个地。


引用
....

SQL code:
DECLARE @TB TABLE([Id] INT, [parentId] INT)
INSERT @TB
SELECT 17, 16 UNION ALL
SELECT 16, 0 UNION ALL
SELECT 15, 0 UNION ALL
SELECT 14, 1 UNION ALL
SELECT 13, 6 UNION ALL
SELECT 12, 8 UNION ALL
SELECT 11, 1 UNION ALL
SELECT 10, 2 UNION ALL
SELECT 9, 1 UNION ALL
SELECT 8, 0 UNION ALL
SELECT 7, 0 UNION ALL
SELECT 6, 0 UNION ALL
SELECT 5, 1 UNION ALL
SELECT 4, 2 UNION ALL
SELECT 3, 1 UNION ALL
SELECT 2, 0 UNION ALL
SELECT 1, 0

DECLARE @STR VARCHAR(MAX)
SET @STR=''

;WITH CTE AS
(
SELECT *,ID AS GRP from @TB WHERE [parentId]=0
UNION ALL
SELECT T.*,CTE.ID from @TB AS T JOIN CTE ON T.[parentId]=CTE.ID
)
SELECT @STR=@STR+','+RTRIM(ID)
from CTE
ORDER BY GRP DESC,[parentId],ID

SELECT STUFF(@STR,1,1,'')
/*
16,17,15,8,12,7,6,13,2,4,10,1,3,5,9,11,14
*/



楼上高手高手高高手,谢谢

SQL code



Co


相关问答:

sql小小的疑问 - .NET技术 / C#

可能因为工作的原因 接触数据库这块比较少,之前都是做程序这块,数据库这块都有专门的人来做 分工都很明细 所以对数据库这一块完全不了解。前段时间 去面试了几家公司 几乎都是在数据库这块挂掉的 连个简单的SQ ......

ASP链接SQL的简单登陆界面 - .NET技术 / ASP.NET

protected void btnLogin_Click(object sender, EventArgs e)
  {
  SqlConnection conn = new SqlConnection("Server = (local);user id = sa;pwd = 1;database = Login");
&nb ......

两句SQL并一句,有问题. - MS-SQL Server / 基础类

第一句:
select ht.gfdm,gfdm.gfmc,gfdm.lb ,sum(jh.htdj*jh.htsl)as je
from ht left join gfdm on ht.gfdm=gfdm.gfdm 
 join jh on ht.htbh=jh.hth 
and ht.htbh not like'del%' and ht. ......

vs2008 连接mysql? - MS-SQL Server / 基础类

请问
添加新数据源->数据库->添加连接
这个界面下,数据源选择:Microsoft SQL Server (SqlClient);
服务器名:
应该写什么呢?
有谁知道?多谢各位!!
你到底是要连mysql还是mssql?

引用
请问
......

求一SQL写法 - MS-SQL Server / 基础类

id                           url                   rank     ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号