sql - 使用基于同一表中的 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
提前感谢您的任何建议。
解决方案
您需要在 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 查询将适用于代码列中不存在重复值的示例数据。
干杯!!
推荐阅读
- oracle - 如何使用 ViewMappingRepository 在 ATG BCC UI 中隐藏用户属性
- nginx-config - Nginx 如何在 nginx.conf 文件中启用 --with-http_stub_status_module
- c# - 从 ASP.Net Web API 2.0 在 sharepoint 中分配 peoplepicker 值
- qt - 2 个不同 QML 之间的 QML 信号和时隙
- php - 我应该使用 BelongsToMany、hasManyThrough 还是加入?
- java - Spring Data - CrudRepository - 从方法名称创建查询
- python - Python:查找文本中两位参考号的所有实例
- node.js - 如何使用node js sequelize对模型使用count函数
- powershell - 替换文件中的多个字符串字符和引号
- javascript - 如何修复未捕获的 ReferenceError:未定义 TimelineMax