2017-06-19 48 views
0

我有一個不上的ID列IDENTITY或主鍵做了一個表格:ID列已按順序中斷 - 如何修復所有條目?

create table foo (id INT, name nvarchar(MAX)); 
INSERT INTO foo VALUES (1, 'George Washington'); 
INSERT INTO foo VALUES (2, 'John Adams'); 
INSERT INTO foo VALUES (3, 'Thomas Jefferson'); 
INSERT INTO foo VALUES (3, 'James Madison'); 
INSERT INTO foo VALUES (4, 'James Monroe'); 
INSERT INTO foo VALUES (5, 'John Quincy Adams'); 

注意兩個項目具有價值3.如何之一來解決所有必要的值ID列ID(除了使用手動UPDATE語句)?預期結果是ID列1,2,3,4,5,6

+1

你這是什麼意思修復..?你可以更新或刪除,如果你修復表中的記錄或使用rownumber如果你想顯示在選擇 – TheGameiswar

+0

@TheGameiswar我的意思是解決它,使ID列有增量值。而不是1,2,3,3,4,5 ...需要它是1,2,3,4,5,6但我想要一個新穎的解決方案,因爲我有超過6行 – Yoav24

回答

1

使用RowNumber

  SELECT id , 
        NAME 
      FROM (SELECT ROW_NUMBER() OVER (ORDER BY id, name) id, 
           name 
         FROM  foo 
        ) T 

結果:

id  NAME 
    ------ ------------------- 
    1  George Washington 
    2  John Adams 
    3  Thomas Jefferson 
    4  James Madison 
    5  James Monroe 
    6  John Quincy Adams 

    (6 row(s) affected) 
+1

在'Row_Number' ,「按ID排序,名稱」會更有意義 –

相關問題