整理 sql 个层次结构

organize sql heirarchy

我有以下 table:

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

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

如果您不想更改数据,则不要将数据存储在行号中,只需使用

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() 可能会根据您使用的数据库更改名称,但这是您应该使用的粗略概念。