我有一個數據庫。我想更新它的一列。該列應該按照另一列的字母順序以升序排列唯一的整數。指定行排序號
對不起不清楚,也許,我想有整數這樣的:
1 ACC 501
2 BCC 501
3 GCC 601
4 FCC 601
是否有使用MySQL或SQL查詢設置此等級/順序的一個相當簡單的方法是什麼?
我有一個數據庫。我想更新它的一列。該列應該按照另一列的字母順序以升序排列唯一的整數。指定行排序號
對不起不清楚,也許,我想有整數這樣的:
1 ACC 501
2 BCC 501
3 GCC 601
4 FCC 601
是否有使用MySQL或SQL查詢設置此等級/順序的一個相當簡單的方法是什麼?
創建另一個與您的原始表具有相同架構的表格以及新列。新列應該是自動編號。在該表中執行INSERT ... SELECT。新列將填寫您想要的值。
像什麼亞歷克斯說,你要創建一個新的表像
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;
您需要的是目前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
必須小心 - 變量方法只適用於InnoDB表IME。對MyISAM表格有一致性問題。 –
@OMG小馬 - 授予。當然,還有其他的解決方案,例如不同的數據庫產品,但我離題了。 :) – Thomas
非常感謝thomas,這就是我一直在尋找的東西。上帝保佑你。也感謝其他人的幫助。 – umeed