首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加字段并插入增量值

问添加字段并插入增量值
EN

Stack Overflow用户
提问于 2011-04-17 17:43:54
回答 2查看 2.6K关注 0票数 1

我有一张桌子:

代码语言:javascript
复制
id   ref     data
1    111     data1
2    111     data2
3    111     data3
4    111     data4
5    222     data1
6    222     data2
7    222     data3
8    333     data1
9    333     data2

我想插入一个名为order的新字段,其中对于每个ref,我将设置一个新月值。因此,产出应该是:

代码语言:javascript
复制
id   ref     data    order
1    111     data1   1
2    111     data2   2
3    111     data3   3
4    111     data4   4
5    222     data1   1
6    222     data2   2
7    222     data3   3
8    333     data1   1
9    333     data2   2

我可以用一个简单的查询来完成这个任务吗?

编辑

上面的例子只是一个例子。这是我在数据库上的真正的表格:

代码语言:javascript
复制
CREATE TABLE `items` (
  `id` int(11) unsigned NOT NULL auto_increment,
  `trackid` varchar(255) NOT NULL,
  `side` varchar(255) NOT NULL,
  `side_pos` char(2) NOT NULL default '#',
  `pos` int(11) NOT NULL,
  `hh` char(2) NOT NULL,
  `mm` char(2) NOT NULL,
  `ss` char(2) NOT NULL,
  `atl` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=20229 DEFAULT CHARSET=utf8
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-17 17:50:43

MySQL不支持分析(IE: ROW_NUMBER),这是您所追求的输出所需要的。使用:

代码语言:javascript
复制
SELECT x.id, x.ref, x.data, x.rank AS `order`
  FROM (SELECT t.id, t.ref, t.data
               CASE 
                 WHEN @ref = t.ref THEN @rownum := @rownum + 1
                 ELSE @rownum := 1
               END AS rank,
               @ref := t.ref
          FROM YOUR_TABLE t
          JOIN (SELECT @rownum := NULL, @ref := -1) r
      ORDER BY t.id, t.ref, t.data) x

通常,这需要单独的语句来声明@rownum和@ref变量,但是,如果像在示例中所看到的那样定义了@rownum和@ref变量,那么MySQL允许您使用它们。

如果ref值不匹配,CASE语句将@rownum值重置为一个。否则,@rownum将增加一个。与递增@rownum值相关联的列由ORDER BY子句确定。

票数 6
EN

Stack Overflow用户

发布于 2011-04-17 18:33:01

我相信,如果您创建一个主键(ref,order),其中order是一个auto_increment,那么您可以让数据库自动为您创建这个键。

http://mysqldump.azundris.com/archives/5-AUTO_INCREMENT-Trivia.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5695217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档