我與列的表格:(這僅是一個例子,我有50K記錄)有一個序列號的MySQL更新列
Name, Number
Joe Null
Michael Null
Moses Null
我更新1-3個這樣的序列號數它看起來就像這樣:
Name, Number
Joe 1
Michael 2
Moses 3
我怎樣才能做到這一點在SQL的MySQL在一個SQL命令
我與列的表格:(這僅是一個例子,我有50K記錄)有一個序列號的MySQL更新列
Name, Number
Joe Null
Michael Null
Moses Null
我更新1-3個這樣的序列號數它看起來就像這樣:
Name, Number
Joe 1
Michael 2
Moses 3
我怎樣才能做到這一點在SQL的MySQL在一個SQL命令
SET @rank:=0;
update T
set [email protected]:[email protected]+1;
UPDATE
一個聲明替代方式
UPDATE T
JOIN (SELECT @rank := 0) r
SET [email protected]:[email protected]+1;
你可以嘗試設置Number
到AUTO_INCREMENT這樣的數字將產生:
ALTER TABLE your_table MODIFY Number INT AUTO_INCREMENT
除此之外,你可能需要: a)存儲的例程 b)應用程序代碼
我努力在網上找到一個答案,並發現以下方法爲我工作,根據上面的一些信息,但使用不同的更新方法。張貼在這裏以防別人幫助他人。
注意:對於我的數據集,排名是一次性固定計算,不會改變。我想將它作爲一個列添加,以便每次將數據從MySQL提取到Python時保存運行計算。
溶液I中:
樣品名稱,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;
這是粗法的等級,但對工作的指標我數據集。
有時可以找到寶石內部粗略的代碼,對我來說非常有用,確實奇妙的嘗試 –
基於的假定訂單是什麼?按字母順序排列? – JNK
沒關係。我需要在數字中的所有數字1-3(1-size) – Dejell