在同一个表中分组名称

时间:2017-09-29 11:58:04

标签: sql group-by

我有以下SQL表列...

id | name  | under
---|-------|------
 0 | Nill  |  -1  
 1 | Name1 |   0 
 2 | Name2 |   0 
 3 | Name3 |   0  
 4 | Name4 |   1  
 5 | Name5 |   2 
 6 | Name6 |   2 
 7 | Name7 |   1  
 8 | Name8 |   3  
 9 | Name9 |   2 
 10| Name10|   3 

我需要输出如下

Name1
  Name4
  Name7
Name2
  Name5
  Name6
  Name9
Name3
  Name8
  Name9

帮我找出解决方案。

2 个答案:

答案 0 :(得分:0)

我认为你正在寻找类似的东西。

;WITH CTE AS ( 
    SELECT id parent , * FROM Users WHERE under = 0
    UNION ALL 
    SELECT CTE.id patent ,T.* FROM Users T INNER JOIN CTE ON CTE.id = T.under 
 )
 select * from CTE 
 order by parent, under

答案 1 :(得分:-1)

您可以使用以下语法执行此操作: -

 SELECT column_name(s)
 FROM table_name
 WHERE condition
 GROUP BY column_name(s)
 ORDER BY column_name(s);