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