分配行排名编号

发布于 2024-11-17 05:34:02 字数 192 浏览 2 评论 0原文

我有一个数据库。我想更新一个专栏。该列应包含根据另一列的字母顺序升序排列的唯一整数。

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

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

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

I have a database. I want to update a column of it. The column should contain unique integer numbers in ascending order according to alphabetical order of another column.

Sorry not clear maybe, I want to have integer numbers like this:

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

Is there a reasonably simple way of setting this rank/order with mysql or sql query?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

绝對不後悔。 2024-11-24 05:34:02

你需要的是一个排名功能,目前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

What you need is a ranking function which is not supported by MySQL at the moment. However, you can simulate them like so:

Set @rownum := 0;

Select rnk, SomeCode, SomeNum
From    (
        Select @rownum := @rownum + 1 As rnk, SomeCode, SomeNum
        From MyTable
        Order By SomeCode Asc
        ) As Z
沫离伤花 2024-11-24 05:34:02

创建另一个与原始表具有相同架构的表,并添加新列。新列应该是自动编号。对该表执行 INSERT...SELECT。新列将填写您想要的值。

Create another table that has the same schema as your original table, plus the new column. The new column should be an autonumber. Do an INSERT...SELECT into that table. The new column will be filled out with the values you want.

徒留西风 2024-11-24 05:34:02

就像亚历克斯所说,你想创建一个新表

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;

Like what Alex said, you want to create a new table like

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

And then insert with

INSERT INTO newTable
SELECT * FROM oldTable
ORDER BY orderColumn;

I think you can quickly do the create table with

CREATE TABLE newTable LIKE oldTable;
ALTER TABLE newTable ADD COLUMN id INT NOT NULL AUTO_INCREMENT;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文