2011-08-09 68 views
2

我在尋找純SQL(或MySQL)語法,我不知道這是否是可能別的我將創建一個PHP腳本,但...SQL再生ID保持自動增量

我有一個基本的表有一個主鍵:ID和一些列。我沒有依賴別人的表。

目前我行的樣子:

ID Column1 Column2 
22 test  test 
26 test2  test2 
33 test3  test3 
... 

現在我要重新生成我的ID,以維持秩序。例如:我開始設定在22

ID Column1 Column2 
22 test  test 
23 test2  test2 
24 test3  test3 
... 
+0

可能重複:重新排序/復位自動遞增的主鍵?](http://stackoverflow.com/questions/740358/mysql-reorder-reset-auto-increment-primary-key) – gbn

+1

備註:對於確實有意義的標識符,'AUTO_INCREMENT'不是一個好選擇。例如,你必須發出一個DML查詢來重置它。 –

回答

5

去看看有:Reorder/reset auto increment primary key

但正如說,它會毀了你已經擁有的關係。但是,因爲你沒有它的確定

ALTER TABLE `table` DROP `id`; 
ALTER TABLE `table` AUTO_INCREMENT = 1; 
ALTER TABLE `table` ADD `id` int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST; 
+0

順便說一句谷歌回答「重新排序自動增量」,這是更快的類型問問題? – yokoloko

+0

這是如何保證訂單被保留的? –

+0

它沒有。但這不是問題。由於沒有關係,所以沒關係。 – yokoloko

0

最簡單的方法是創建一個新表所需AUTO_INCREMENT列然後

INSERT INTO myNewTable (column1, column2) 
SELECT column1, column2 
FROM myOldTable 
ORDER BY ID 
的[MySQL的