Oracle SQL update语句说明如何一次更新两行



我试图更新一个表中的两行。如果我使用:

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

谢谢,Kate

子查询需要返回一个SINGLE行。当你在第一个条件中包括条件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失败。

最新更新