我有下表:
Id Son RowOrder Technology
1 8 NULL fa
8 0 NULL fa
9 15 NULL gr
15 0 NULL gr
我想创建一个sql查询,它将执行"命令"通过以下方式 订单:技术,"父亲" (一个有儿子的记录),儿子(前父亲的直子" 并对RowOrder列进行更新,以便下次我将根据RowOrder单独订购这些记录。 有任何想法吗? 感谢
答案 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()可能会根据您使用的数据库更改名称,但这是对您应该使用的内容的粗略概念。