【问题标题】:How to Update a table having same id but different data in rows?如何更新具有相同ID但行中数据不同的表?
【发布时间】:2021-11-29 10:33:13
【问题描述】:

假设我有 一个表 t1 有以下数据,其中 id 值没有改变

ID Name Application_id Location
1 UAT 123 USA
1 TEST 222 UK

现在我只想更新 第一行的 name(下面是所需的 o/p)

ID Name Application_id Location
1 DEV 123 USA
1 TEST 222 UK

【问题讨论】:

  • update your_table set name = 'DEV' where ID = 1 and Applciation_id = 123 ???
  • SQL 表是一个集合,它没有内在的顺序。所以没有“第一”行,你的问题不清楚。请定义如何在您的案例中识别“第一”行。

标签: sql oracle sql-update


【解决方案1】:

没有什么可以阻止您使用正在更新的列的当前值。所以

update <your_table>
   set name = 'DEV' 
 where id = 1 
   and name = 'UAT'; 

【讨论】:

    【解决方案2】:

    第一行取决于您如何对数据进行排序,因为表格代表无序集。假设,根据application_id 列的升序排序更新您的表,例如

    MERGE INTO t USING
              (SELECT t.*, 'DEV' AS name_new 
                 FROM t
                ORDER BY t.application_id
                FETCH FIRST ROW ONLY) t1
              ON ( t1.id = t.id AND t1.application_id = t.application_id )
    WHEN MATCHED THEN UPDATE SET t.name = name_new
    

    Demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多