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

Oracle SQL-将Oracle SQL中的ID更新为顺序

夹谷晋
2023-03-14
问题内容

我在Oracle SQL中有一张表,其ID的顺序是递增的,但是由于编辑的原因,ID中存在间隙,例如,ID当前类似于

  • 22
  • 23
  • 24
  • 32
  • 33
  • 44
  • …等等

我想通过遍历表中的每一行并更新它们来解决这些差距,因此没有差距。最好的方法是什么?


问题答案:

我认为以下将在Oracle中起作用:

update (select t.*, row_number() over (order by id) as newid) toupdate
    set id = newid

上面的答案很久以前就被接受了。它不起作用。我认为答案应该包含有效的代码,因此:

merge into t dest using
       (select t.*, row_number() over (order by id) as newid from t) src
       on (dest.rowid = src.rowid)
   when matched then update set id = newid;


 类似资料:
  • 此代码正在触发错误 无效的sql对象。 从文档中我觉得表中的任何对象都是sql对象<这里怎么了? 在Oracle 10G中考虑以下函数 在10G上下文中考虑以下函数 我得到了一个错误的无效对象 我的桌子就像 此表位于“测试”模式中,我与SCOTT有联系,SCOTT有“测试时授予选择权”。测试表到scott's 我还是会出错 ERR_INVALID_OBJECT

  • 我有一个大约15万行的表,我必须使用JavaQuartz Scheduler一次获取1000行。要求是一次限制1000行,然后再限制1000行等(与MySQL限制查询相同)。 我正在使用以下查询: 问题是上面的查询返回了我在结果集中不需要的额外列rownum,因为返回的数据被传递给MapListHandler(),后者返回将结果转换为JSON,并且我将此JSON传递给不期望额外rownum列的We

  • 我知道这相对简单,但我无法在归档中找到解决方案,尽管我看到了类似的解决方案,但我的SQL不足以对它们进行反向工程。 我所要做的就是从呼叫管理表中,按周分组计算团队中发出的呼叫数。下面是一个返回30000多个条目的代码示例。如果可能的话,我想把这个数字分为几周,也可以根据周五到周五的范围分为几天? 关键领域是 表名称是 这样我就可以创建一个列表,列出该支持组每周记录的通话次数 所以很简单,但是我可以

  • 在Crystal Reports中,我使用以下查询(针对Oracle数据库)为报表中的单个字段生成数据: 这可以很好地工作,并基于提供的{HB_As_At_Date}(the{?}语法是Crystal将参数值嵌入SQL(SQL)的方法。不过,上述查询的内容不是我的问题——我想做的是在几个不同的日期重复运行它,并将输出输入Crystal以供在报告中使用。 假设我希望在9月的每个星期一运行这个查询,我

  • 只想确认Oracle SQL中需要转义哪些字符才能避免SQL注入?到目前为止,我只发现这篇文章似乎回答了我的问题:https://ss64.com/ora/syntax-escape.html.然而,正如我所听说的,amphora“@”字符也需要转义,因此,我认为上面的文章中有不完整的需要转义的字符列表。如果有人能告诉我Oracle SQL中需要转义的字符的完整列表,我将不胜感激。

  • 问题内容: 我想要一个触发器来对插入的记录执行以下操作: 更清楚的说:说我有一个包含三列的表:主键,整型,varchar。 当我这样插入时: 我想拥有: 但是当我省略时: 它应自动设置为此记录的: 扳机有可能吗?(我知道插入后可以更新记录,但使用触发器会更好。) 问题答案: 我不知道任何方法可以在一个语句中执行此操作,即使使用触发器也是如此。 @Lucky建议的触发器解决方案在MySQL中如下所示