Oracle SQL update инструкция, как обновлять две строки одновременно - PullRequest
0 голосов
/ 29 ноября 2018

Я пытался обновить две строки в таблице.Если я использовал:

update ERNTESTUPDATE a
set (date_loaded, acad_career) = (select distinct b.date_loaded, b.acad_career
from PS_STDNT_ENRL b
where rownum=1)
where to_char(date_created) = to_char(trunc(sysdate))
; 

Я получил 2 строки, обновленные как

11/29/18 UGRD
11/29/18 UGRD

Если я использовал:

update ERNTESTUPDATE a
set (date_loaded, acad_career) = (select distinct b.date_loaded, b.acad_career
from PS_STDNT_ENRL b
where a.date_loaded = b.date_loaded )
where to_char(date_created) = to_char(trunc(sysdate))
;

Я получил ошибку

однострочный подзапрос возвращает более одной строки

Как получить результат, как показано ниже:

11/29/18 UGRD
11/29/18 GRAD

Спасибо, Кейт

1 Ответ

0 голосов
/ 29 ноября 2018

Подзапрос должен возвращать ОДИНОЧНУЮ строку.Это хорошо работает, когда вы включаете условие rownum=1 в первое:

select distinct b.date_loaded, b.acad_career
from PS_STDNT_ENRL b 
where rownum=1 -- this filter makes sure only one row is returned

Если вы удалите это условие, то подзапрос вернет несколько строк, что приведет к сбою целого UPDATE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...