如何将订单添加到现有表?

时间:2013-12-19 09:03:18

标签: sql sql-server sql-server-2012

我有一个名为Products的表。让我们说这是我的表,

ID    Name     ParentID
--    ---       --------
1      a        NULL
2      b        NULL
3      a1       1
4      a2       1
5      b2       2
6      b2       2

现在我需要添加关于ParentID的[Order]列,

ID    Name     ParentID    Order
--    ---       --------   ----
1      a        NULL        NULL
2      b        NULL        NULL
3      a1       1            1
4      a2       1            2   
5      b2       2            1  
6      b2       2            2  

创建[Order]是微不足道的,但插入记录有点棘手

1 个答案:

答案 0 :(得分:3)

UPDATE  [Products]
SET  [Products].[Order] = PTT.[Order]
FROM
    [Products]
    INNER JOIN (SELECT ID, ROW_NUMBER() OVER (PARTITION BY PT.ParentID ORDER BY ID) AS [Order]
                FROM [Products] PT
                WHERE PT.ParentID IS NOT NULL) AS PTT ON PTT.ID = [Products].ID