[英]Update 3 column in same time 2nd table all field varchar update help of phone number
[英]Update Oracle table column with a sequence number based on varchar field in same table
我需要有关语法的帮助,该语法根据另一个字段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
预先感谢您的任何建议。
您可以这样做:
merge
into table
using (
select code,row_number() over (order by code asc) as new_code_order from table
) new_table
on (table.code = new_table.code)
when matched then update set
table.code_order = new_table.new_code_order
我认为这在以下简单情况下也可以:
update (select * from table order by code) set code_order = rownum;
您需要在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)
注意 :在代码列中不存在重复值的情况下,该查询将适用于示例数据。
干杯!!
您可以使用with..as
子句
update tab t
set code_order = ( with tb as (
select t.*,row_number() over (order by code) as rn from tab t
)
select rn
from tb
where tb.code=t.code)
考虑到code
列的值是唯一的
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.