2011-07-07 23 views
27

我與列的表格:(這僅是一個例子,我有50K記錄)有一個序列號的MySQL更新列

Name, Number 

Joe  Null 
Michael Null 
Moses Null 

我更新1-3個這樣的序列號數它看起來就像這樣:

Name, Number 

Joe  1 
Michael 2 
Moses 3 

我怎樣才能做到這一點在SQL的MySQL在一個SQL命令

+1

基於的假定訂單是什麼?按字母順序排列? – JNK

+0

沒關係。我需要在數字中的所有數字1-3(1-size) – Dejell

回答

1

你可以嘗試設置Number到AUTO_INCREMENT這樣的數字將產生:

ALTER TABLE your_table MODIFY Number INT AUTO_INCREMENT 

除此之外,你可能需要: a)存儲的例程 b)應用程序代碼

2

我努力在網上找到一個答案,並發現以下方法爲我工作,根據上面的一些信息,但使用不同的更新方法。張貼在這裏以防別人幫助他人。

注意:對於我的數據集,排名是一次性固定計算,不會改變。我想將它作爲一個列添加,以便每次將數據從MySQL提取到Python時保存運行計算。

溶液I中:

  • 秩爲0(如上)
  • 創建包含選擇查詢來計算秩
  • 更新原始表與所計算的行列的臨時表。使用

樣品名稱,ROWID是每一行的唯一標識符,值是將被用來確定每一行

SET @rank=0; 
CREATE TEMPORARY TABLE rank_temp 
AS 
(SELECT rowid, value, @rank:[email protected]+1 AS rank FROM source_table ORDER BY value ASC); 

UPDATE sourcetable a, rank_temp b 
SET a.rank = b.rank 
WHERE a.rowid = b.rowid; 

這是粗法的等級,但對工作的指標我數據集。

+1

有時可以找到寶石內部粗略的代碼,對我來說非常有用,確實奇妙的嘗試 –