UPDATE CHILD_COND
SET S_TRD=
(SELECT S_TRD
FROM
(SELECT MAX(TV.S_TRD) AS S_TRD,
TV.TRADEID AS TRADEID,
TV.TRD_VER AS TRD_VER,
TV.TIMEST AS TIMEST,
TV.SOURCENAME AS SOURCENAME,
STG_TRADE.SP_COND AS SP_COND
FROM MASTER_T TV,
T_STG_TRADE_VERSION STG_TRADE
WHERE TV.SOURCENAME = STG_TRADE.SOURCENAME
AND TV.TRADEID = STG_TRADE.TRADEID
AND TV.TRD_VER = STG_TRADE.TRD_VER
AND TV.TIMEST = STG_TRADE.TIMEST
AND TRADESETID = '91004'
GROUP BY TV.TRADEID,
TV.TRD_VER,
TV.TIMEST,
TV.SOURCENAME,
STG_TRADE.SP_COND
)TRD WHERE CHILD_COND.SP_COND = TRD.SP_COND AND S_TRD IS NOT NULL
)
Мне нужно обновить внешний ключ в дочерней таблице на основе первичного ключа из главной таблицы. Но когда в дочерней таблице нет значения, все значения дочернего ключа ребенка обновляются до нуля. S_TRD в настоящее время устанавливается в нуль, когда новые мастер-записи вставляются в MASTER_T, но нет соответствующих дочерних записей в CHILD_CONDПроблема с сложным запросом обновления в Oracle
Почему бы вам не попробовать присоединиться с CHILD_COND в вашем из пункта в самом внутреннем запросе таким образом, вы бы только запустить процесс обновления на мастер-записей с детьми –
Можете ли вы предоставить мне некоторые sample.I не являюсь экспертом в SQL – user2501620