【问题标题】:update query to update the sorting order number in a column ORDER_NUM same table, sorted by date for each FK_ID更新查询以更新同一表中ORDER_NUM列中的排序顺序号,每个FK_ID按日期排序
【发布时间】:2014-04-27 06:00:29
【问题描述】:
表格1 ============================== FK_ID 日期名称 ORDER_NUM 1 D1 N1 空 1 D2 N2 空 1 D3 N3 空 1 D4 N4 空 2 D5 N7 空 2 D2 N8 空 2 D3 N9 空

结果

表格1 ============================== FK_ID 日期名称 ORDER_NUM 1 D1 N1 1 1 D2 N2 2 1 D3 N3 3 1 D4 N4 4 2 D1 N7 1 2 D2 N8 2 2 D3 N9 3

我想在 oracle 中编写一个更新查询,它将更新同一表列中的排序顺序号,称为 ORDER_NUM,按每个 FK_ID 的日期排序

【问题讨论】:

    标签: oracle11g sql-update


    【解决方案1】:
    merge into table1
    using (
      select rowid as rid, 
             row_number() over (partition by fk_id order by date) as rn
      from table1
    ) t on (t.rid = table1.rowid) 
    when matched then update
      set order_num = rn;
    

    我使用rowid 作为“PK 替换”,因为您的示例不包含似乎是该表主键的列。

    顺便说一句:date 是一个可怕的列名称,我希望它不是真正的名称

    【讨论】:

    • 非常感谢...运行良好...是的,这不是真正的列名 :)
    猜你喜欢
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    • 1970-01-01
    • 2019-02-22
    • 2020-04-29
    相关资源
    最近更新 更多