当前位置: 首页 > 面试题库 >

添加一个字段并插入一个增量值

凤安然
2023-03-14
问题内容

我有这张桌子:

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 ,对于每个引用,我将设置一个新月值。因此输出应为:

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

我可以用一个简单的查询做到这一点吗?

编辑

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

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

问题答案:

MySQL不支持分析(IE:ROW_NUMBER),这是您要使用的输出结果。使用:

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变量,但是如果像在示例中所看到的那样定义了MySQL,MySQL将使您脱身。

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



 类似资料:
  • 我必须使用tbody的第一行创建thead。我不能完全控制标记,所以我使用jQuery来实现这一点。 我已经成功地使用了一些借用的脚本,但当我将多个表添加到页面时,第一行似乎在下面的表中重复 我可以想象我需要以父表为目标,通常我会给每个表一个ID,但我不能,因为这些都是为我生成的。 在这把小提琴上可以看到正在发生的事情的一个例子http://jsfiddle.net/FGH6B/ 我当前的jque

  • 我对Android应用程序很陌生,所以我希望能在这里找到一些帮助。我已经在这里搜索了我的问题并找到了一些东西,但这不起作用。 我想向FrameLayout添加一个片段,但它不起作用。我的目标是创建一个框架(/框架?)这总是存在的,用户可以与它交互,在这个框架内的一个特定的“窗口”中,我想显示页面/片段,总共五个,并且能够随时切换页面/片段,所以我有一个始终存在的框架,在这个动态变化的页面内。但现在

  • 预备知识: 对 C++ 有一定了解. 已经下载 TensorFlow 源代码并有能力编译它. 如果现有的库没有涵盖你想要的操作, 你可以自己定制一个. 为了使定制的 Op 能够兼容原有的库 , 你必须做以下工作: 在一个 C++ 文件中注册新 Op. Op 的注册与实现是相互独立的. 在其注册时描述了 Op 该如何执行. 例如, 注册 Op 时定义了 Op 的名字, 并指定了它的输入和输出. 使用

  • 我想在Android的一个活动中添加两个片段。但在加法时,它给出了错误; activity_main.xml 片段的布局1 片段2的布局

  • 问题内容: 我正在处理一些旧代码/数据库,需要在数据库中添加一个字段,该字段将记录与该(外部)ID相关的序列号。 表格数据示例(当前): 我需要添加一个sequenceid列,该列分别为每个帐户递增,以实现: 请注意,该顺序与帐户有关。 有什么方法可以用SQL来实现,还是可以使用PHP脚本为我完成工作? TIA,Kev 问题答案: 这应该可以,但是可能很慢: 我称该表为“测试”;显然,需要正确设置

  • 问题内容: 我在可变字符串中定义了一个大写字母,我想输出字母表中的下一个和上一个字母。例如,如果变量等于,我将要输出和。 问题答案: 单程: