Я пытаюсь запустить запрос на обновление.
Таблица PS_Z_TREND_NOW_TBL содержит столбцы DESCR254 и URLS.
Я использую PSPRSMDEFN, который имеет много столбцов, включая PORTAL_LABEL и URLS. Я хочу запустить приведенный ниже запрос обновления, чтобы обновить столбец PS_Z_TREND_NOW_TBL.URLS, где значения соответствуют PS_Z_TREND_NOW_TBL.DESCR254 и PSPRSMDEFN.URLS. Что мне нужно изменить/добавить в запросе ниже, чтобы сделать это? Когда я пытаюсь запустить ниже запрос он дает ошибку о том, «однорядный подзапрос возвращает более одной строки»Проблема ORACLE SQL UPDATE
UPDATE PS_Z_TREND_NOW_TBL now
SET now.URLS = t.URLS
WHERE now.DESCR254 IN(
select t.PORTAL_URLTEXT from PSPRSMDEFN t, PS_Z_TREND_NOW_TBL trd
where t.VERSION =
(select MIN(t2.VERSION)
from PSPRSMDEFN t2
WHERE t2.PORTAL_LABEL = trd.DESCR254
AND t2.PORTAL_REFTYPE = 'C'
group by t2.PORTAL_LABEL
)
AND t.PORTAL_LABEL = trd.DESCR254
AND t.PORTAL_REFTYPE = 'C'
and t.PORTAL_NAME = 'EMPLOYEE'
)
Эту часть запроса из выше возвращает несколько строк данных. Возвращаемые значения имеют одинаковые значения в PS_Z_TREND_NOW_TBL.DESCR254. Я хочу сопоставить эти значения с тем, что возвращается в запросе, чтобы обновить поле URLS.
select t.PORTAL_URLTEXT from PSPRSMDEFN t, PS_Z_TREND_NOW_TBL trd
where t.VERSION =
(select MIN(t2.VERSION)
from PSPRSMDEFN t2
WHERE t2.PORTAL_LABEL = trd.DESCR254
AND t2.PORTAL_REFTYPE = 'C'
group by t2.PORTAL_LABEL
)
AND t.PORTAL_LABEL = trd.DESCR254
AND t.PORTAL_REFTYPE = 'C'
and t.PORTAL_NAME = 'EMPLOYEE'
Не проблема сама объяснительная? При выполнении обновления вы можете установить только значение строк для одного значения, а не несколько значений, возвращаемых запросом. Вам нужно будет создать логику, чтобы заставить нижний оператор выбора возвращать одну строку вместо ... ваша проблема действительно связана с вашими данными и ничего в вашем коде – Twelfth
, что не помогает. как бы я изменил запрос? – user3586248
попробуйте 't.version in' вместо' t.version = ' – Aramillo