Стандартный синтаксис команды Update допускает следующие варианты:

 

SELECT-ы должны возвращать гарантированно только одну строку !.


Интересная задачка. В таблице есть поле id_level , которое заполнено числами с пробелами, т.е. 1,2,3,5,9.
Требуется удалить пробелы, то есть получить значения 1,2,3,4,5, при этом обеспечить тот же порядок строк.

Вот 2 варианта решения этой задачи. Первый годится, если имеется подходящий индекс. Второй абсолютно универсальный.

UPDATE table_A SET id_level = ROWNUM  
WHERE ROWID IN (SELECT /*+ INDEX (table_A table_A#id_level )*/ ROWID FROM table_A ) 
 
UPDATE table_A SET id_level = ROWNUM  
WHERE id_level IN (SELECT id_level FROM table_A GROUP BY id_level) 
Подзапрос должен выдать нужный нам порядок перебора таблицы для обновления.
Хостинг от uCoz