SQL-запрос для обновления столбца - PullRequest
0 голосов
/ 15 июля 2011

У меня есть этот запрос, который выдает ошибку-SQL выдает ошибку

ORA-01427 подзапрос одной строки возвращает несколько строк

в Oracle 8.

UPDATE STG1_HFHS_ENR_EMP_ROSTER_2005 A
SET 
A.BUSINESS_UNIT =
( SELECT t.BUSINESS_UNIT
FROM STG1_HFHS_ENR_EMP_ROS_2005_TMP t, STG1_HFHS_ENR_EMP_ROSTER_2005 s
WHERE t.ID = s.ID ) 

Не могли бы вы помочь мне исправить вышеуказанную ошибку.Я должен ОБНОВИТЬ один столбец "A.BUSINESS_UNIT =

Ответы [ 2 ]

2 голосов
/ 15 июля 2011

Попробуйте это:

UPDATE STG1_HFHS_ENR_EMP_ROSTER_2005 A
SET 
A.BUSINESS_UNIT =
( SELECT t.BUSINESS_UNIT
FROM STG1_HFHS_ENR_EMP_ROS_2005_TMP t
WHERE t.ID = A.ID AND ROWNUM < 2) 
0 голосов
/ 15 июля 2011
UPDATE stg1_hfhs_enr_emp_roster_2005 a
SET 
a.business_unit =
(SELECT business_unit
 FROM (SELECT business_unit
       FROM stg1_hfhs_enr_emp_ros_2005_tmp 
       ORDER BY ... -- some clause that puts the most relevant business_unit as first
      ) 
 WHERE id = a.id
   AND ROWNUM < 2);

К сожалению, у меня нет доступа к Oracle 8, чтобы проверить это. Для ЗАКАЗА и ограничения количества строк требуется два слоя встроенных представлений. Кроме того, вы не можете напрямую ссылаться на таблицу «a» внутри самого глубокого встроенного представления (некоторое глупое ограничение Oracle), так что это необходимо в среднем представлении.

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