2012-01-14 78 views
-1

具有100K行的MySql 5.3表具有主鍵。mysql如何通過自動遞增列來更新表

還有一個整數列,它不是鍵的一部分。我想更新此列以包含表格的唯一編號。例如。對於第一條記錄,它應該包含1,對於第二條記錄等。

這也可以是自動增量列,但MySql不允許在非鍵列上自動遞增。我不希望這個列成爲密鑰的一部分,因爲它從文件中填充的方式等。

那麼這樣的查詢會是怎樣的呢?

+1

-1。你想要一個唯一的密鑰來表示一個基於插入行數的序列,而不是主鍵?你究竟在做什麼數據庫?! – jmkeyes 2012-01-14 22:56:08

+0

首先,保存加載記錄的順序(來自外部數據庫)。其次,爲了節省空間。原來的主鍵很長,我對這個表格做了很多參考。因此,我不是在每個引用中重複幾個關鍵列,而是在列上創建並在引用中使用它。一些其他導入的表已經使用長主鍵引用 - 因此兩個鍵都必須保留。 – camcam 2012-01-15 01:14:57

+0

所以你想引用表中的某些行?爲什麼不只是引用主鍵,而不是創建一個全新的列來複制主鍵的功能? – jmkeyes 2012-01-15 01:41:46

回答

5

我不知道你爲什麼要做這樣的事情,而是一個可能的解決方案是這樣的:

set @rownum:=0; 
update <table> set column = @rownum:=rownum+1 order by <field> 
+2

謝謝! @rownum:= @ rownum + 1也可以直接在SET子句中的LOAD DATA INFILE中使用 – camcam 2012-01-15 01:30:41