Как обновить таблицу с одинаковым идентификатором, но разными данными в строках?

#sql #oracle #sql-update

Вопрос:

Предположим, у меня есть таблица t1 со следующими данными, в которой значение идентификатора не меняется

ID Имя Идентификатор приложения Расположение
1 UAT 123 США
1 тест 222 Великобритания

Теперь я хочу обновить только столбец » имя » только в 1-й строке(ниже указан желаемый o/p).

ID Имя Идентификатор приложения Расположение
1 разработка 123 США
1 тест 222 Великобритания

Комментарии:

1. update your_table set name = 'DEV' where ID = 1 and Applciation_id = 123 ???

2. Таблица SQL-это набор, она не имеет внутреннего порядка. Так что «первого» ряда нет, и ваш вопрос неясен. Пожалуйста, определите, как определить «первую» строку в вашем случае.

3. community.oracle.com/tech/developers/discussion/4489966/…

Ответ №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