2012-04-20 64 views
12

我在MySQL中有一個包含主鍵列的表。重新索引MySQL數據庫主鍵的查詢

比方說:

ID | Value 
1 | One 
2 | Two 
6 | Three 
8 | Four 
9 | Five 

我得到它是如何做的:

ID | Value 
1 | One 
2 | Two 
3 | Three 
4 | Four 
5 | Five 

有沒有其他表。只有一個。 我只是想讓ID進入正確的系列。

任何建議? 查詢也許.. :)

+0

我知道訂貨重新索引主鍵開始實現結果的簡單方法。這不是我想要的..我希望身份證是在一個完美的序列... – LearningDeveloper 2012-04-20 08:00:04

回答

30

甚至有通過編寫此查詢

SET @newid=0; 
UPDATE tablename SET primary_key_id=(@newid:[email protected]+1) ORDER BY primary_key_id; 

該查詢將從1

+6

這應該是接受的答案 – 2016-05-17 19:42:11

+1

更改我的答案,雖然沒有嘗試過這一個。 – LearningDeveloper 2017-01-26 04:37:35

+0

這個解決方案非常棒,但請根據您重申的這個領域考慮與其他表格的關係!如果你在其他表上有更新條款,那麼它是可以的,如果沒有,你應該更新其他表的ID;) – qdev 2017-11-24 11:26:31

9

對我來說,你有兩種選擇。

1)創建一個新表並複製現有數據。

2)將另一個自動增量字段添加到現有表中,然後刪除原始列。

ALTER TABLE tableName ADD NewIdn INT NOT NULL AUTO_INCREMENT KEY 
+3

工程很好..感謝您的解決方案「dbaseman」.. :) 不得不放棄ID列第一雖然因爲它沒有 不允許帶AUTO_INCREMENT的兩列。 \t「ALTER TABLE'test' DROP COLUMN'id'」 – LearningDeveloper 2012-04-20 08:38:48

0

我通過取消A_I盒(自動遞增的設置),點擊保存,然後再檢查它,然後點擊保存再次這樣做在phpMyAdmin。