组织sql heirarchy

时间:2015-06-13 10:25:39

标签: sql tsql hierarchy

我有下表:

Id   Son  RowOrder   Technology
1     8     NULL       fa
8     0     NULL       fa
9     15    NULL       gr
15    0     NULL       gr

我想创建一个sql查询,它将执行"命令"通过以下方式 订单:技术,"父亲" (一个有儿子的记录),儿子(前父亲的直子" 并对RowOrder列进行更新,以便下次我将根据RowOrder单独订购这些记录。 有任何想法吗? 感谢

1 个答案:

答案 0 :(得分:0)

如果您不想更改数据,请使用

而不是将数据存储在行号中
SELECT 
   id,
   son, 
   technology,
   ISNULL((select id from table t2 where t2.id = t1.son), 0) AS father,
   ROW_NUMBER() OVER (ORDER BY technology, father, son) AS RowNumber
FROM 
   table t1 
ORDER BY 
   RowNumber ASC

函数ISNULL()和ROW_NUMBER()可能会根据您使用的数据库更改名称,但这是对您应该使用的内容的粗略概念。