我需要基於另一個表更新表,所以我必須聲明:與子查詢更新表,並複製
update FAULTS
set FAULTS.FAULT_STATE = (
select INCIDENTS.TICKET_STATE from INCIDENTS
where INCIDENTS.CF_ID = FAULTS.CF_ID
)
,這讓我錯誤說:
ORA-01427: single-row subquery returns more than one row
我試過DISTINCT但狀態值也不同,所以DISTINCT不起作用。所以我也改變了它:
update FAULTS
set FAULTS.FAULT_STATE = (
select INCIDENTS.TICKET_STATE from INCIDENTS
where INCIDENTS.CF_ID = FAULTS.CF_ID and rownum = 1
)
現在它不會給出錯誤。
問題是,如果子查詢返回null,它也將更新行並清除內容。任何修補程序?
順便說一句,'rownum'對事實沒有關係,這SQL將更新FAULTS中的所有行(如果沒有錯誤) –