首页 > 解决方案 > 使用基于同一表中的 varchar 字段的序列号更新 Oracle 表列

问题描述

我需要语法方面的帮助,以根据另一个字段 VARCHAR2 的顺序使用新的数字序列更新 oracle 表中的现有字段。

当前表:

CODE    CODE_ORDER
A00     3
A00.0   4
A00.1   6
A00.9   8

期望的结果:

CODE    CODE_ORDER
A00     1
A00.0   2
A00.1   3
A00.9   4

这里的 SELECT 语句给了我想要的结果,但是当我将它与 UPDATE 语句一起使用时,我收到一个错误。

UPDATE Table SET code_order = (select row_number() over (order by 
code asc) from Table)

UPDATE 语句显示此错误:

ORA-01427: single-row subquery returns more than one row

提前感谢您的任何建议。

标签: sqloraclesql-update

解决方案


您需要在 SET 子句中使用子查询,如下所示:

UPDATE Table t SET t.code_order = (
Select tin1.rn from
(select row_number() over (order by tin.code asc) rn, tin.code from Table tin) tin1
Where t.code = tin1.code)

注意:thks 查询将适用于代码列中不存在重复值的示例数据。

干杯!!


推荐阅读