2015-05-15 3 views
0

посмотреть на этот запрос;Обновить запрос, который будет устанавливать определенные столбцы в записи со значениями из другой записи той же таблицы

update user_data set old_status= 'SNNNNS', 
        user_group='15', 
        default_rate='DEFAULT', 
        entity_num='1001' 
where user_name='Dasu'; 

Я знаю, что я мог бы написать такой запрос и получить результат, но я не хочу писать значения. Эти значения взяты из другой записи с именем пользователя 'sys' в той же таблице. Мне нужен запрос, который обновит эти конкретные столбцы в «Dasu» со значениями из «sys».

Любая идея?

ответ

1

В Oracle вы можете использовать merge с самостоятельным подключением. Кроме того, вы можете написать коррелированные подзапросы в update:

update user_data 
    set (old_status, user_group, default_rate, entity_num) = (select old_status, user_group, default_rate, entity_num from user_data where user_name = 'sys') 
where user_name='Dasu'; 
+0

надеюсь, вы не против, но я обновил свой запрос, чтобы использовать один коррелированный подзапрос, а не по одному в каждой колонке – ninesided

+0

@ninesided. , , Хорошо. Я регулярно забываю, какие базы данных поддерживают это, а какие нет. –

0

Вы можете вкладываете выбрать в своем заявлении обновления. Для примера:

UPDATE Dasu 
SET old_status = (SELECT old_status FROM sys WHERE Id = 1) 
Смежные вопросы