分配行级别号

时间:2011-06-24 21:09:07

标签: mysql sql ranking rank

我有一个数据库。我想更新它的一列。该列应按照另一列的字母顺序按升序包含唯一的整数。

抱歉不清楚,我想要这样的整数:

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

是否有一种使用mysql或sql查询设置此排名/顺序的相当简单的方法?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

创建另一个与原始表具有相同架构的表,以及新列。新列应该是自动编号。在该表中执行INSERT ... SELECT。新列将填入您想要的值。

答案 2 :(得分:0)

像Alex所说,你想创建一个像

这样的新表
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;