2012-06-12 64 views
0

我有一個大型的數據表,並添加了一個新字段,名爲uniq_id我在尋找的是一個查詢,我可以運行該查詢將爲每行更新和增加此字段,而無需編寫腳本做這個。mysql查詢質量增量

任何想法?

回答

0

並表有什麼其他列?如果你使用AUTO_INCREMENT定義新列,MySQL將使用從1開始的順序值填充它。儘管有一個問題:列必須是密鑰或至少是密鑰的一部分(有關詳細信息,請參閱documentation)。如果你沒有在表中的主鍵已經,你可以簡單地這樣做:

alter table MyTable add uniq_id int auto_increment, add primary key (uniq_id); 

如果您不能更改表中的鍵,只是想填補了新列的值一次性的東西,你可以用這個update聲明:

update MyTable set uniq_id = (@count := coalesce(@count+1, 1)); 

coalesce返回它的第一個非空參數,它有效地建立了第一行的列的值。)

1

somethink像(硬沒有你的結構,以做出更好的)

SET @rank = 0; 
UPDATE <your table> JOIN (SELECT @rank:= @rank+ 1 AS rank, <your pk> FROM <your table> ORDER BY rank DESC) 
AS order USING(<your pk>) SET <your table>.uniq_id = order.rank; 

或更容易

SET @rank=0; 
UPDATE <your table> SET uniq_id= @rank:= (@rank+1) ORDER BY <anything> DESC;