2011-06-24 17 views
1

我有一個數據庫。我想更新它的一列。該列應該按照另一列的字母順序以升序排列唯一的整數。指定行排序號

對不起不清楚,也許,我想有整數這樣的:

1 ACC 501 
2 BCC 501 
3 GCC 601 
4 FCC 601 

是否有使用MySQL或SQL查詢設置此等級/順序的一個相當簡單的方法是什麼?

回答

1

創建另一個與您的原始表具有相同架構的表格以及新列。新列應該是自動編號。在該表中執行INSERT ... SELECT。新列將填寫您想要的值。

0

像什麼亞歷克斯說,你要創建一個新的表像

CREATE TABLE newTable(
#Table definition from current table, 
id INT NOT NULL AUTO_INCREMENT 
); 

然後用

INSERT INTO newTable 
SELECT * FROM oldTable 
ORDER BY orderColumn; 

插入我覺得你可以快速地完成創建表與

CREATE TABLE newTable LIKE oldTable; 
ALTER TABLE newTable ADD COLUMN id INT NOT NULL AUTO_INCREMENT; 
3

您需要的是目前MySQL不支持的排名函數。但是,您可以像這樣模擬它們:

Set @rownum := 0; 

Select rnk, SomeCode, SomeNum 
From (
     Select @rownum := @rownum + 1 As rnk, SomeCode, SomeNum 
     From MyTable 
     Order By SomeCode Asc 
     ) As Z 
+0

必須小心 - 變量方法只適用於InnoDB表IME。對MyISAM表格有一致性問題。 –

+1

@OMG小馬 - 授予。當然,還有其他的解決方案,例如不同的數據庫產品,但我離題了。 :) – Thomas

+0

非常感謝thomas,這就是我一直在尋找的東西。上帝保佑你。也感謝其他人的幫助。 – umeed