ORA-01427: однострочный подзапрос возвращает более одной строки при настройке отношения родитель-потомок с GUID (sys_Guid ()) - PullRequest
0 голосов
/ 18 февраля 2019

Я хочу сделать Id (varchar2) для указания типа в таблице родительских дочерних отношений.Я скопировал таблицу следующим образом:

INSERT INTO TEST_TABLE (OLD_ID,
                         ITEM_NAME,
                         PARENT_OLD_ID
                         )
   SELECT 
      OLD_ID,
      NAME,
      PARENT_OLD_ID          
 FROM TEST_TABLE  ;

Затем я захотел обновить таблицу, чтобы установить новое родительское дочернее отношение, например:

UPDATE TEST_TABLE A
  SET PARENT_GUID =
      (SELECT GUID
         FROM TEST_TABLE
        WHERE      OLD_ID = A.PARENT_OLD_ID);

Полученная ошибка выглядит так: ORA-01427: single-подзапрос строки возвращает более одной строки

Я думаю, что в подзапросе оператора update, указанного выше, выбрано более двух элементов.

Есть ли способ решить эту проблему.

Заранее спасибо.

Джун

1 Ответ

0 голосов
/ 18 февраля 2019

Что ж, простой вариант - выбрать, например, MAX (GUID), как

UPDATE TEST_TABLE A
  SET a.PARENT_GUID =
      (SELECT MAX(t.GUID)                   --> this
         FROM TEST_TABLE t
        WHERE      t.OLD_ID = A.PARENT_OLD_ID);

, но вы должны выяснить, что происходит - одинаковы ли эти "многие строки" (так что MAX будетисправьте это), или они отличаются, так что вы бы предпочли не использовать этот подход, а сначала исправить данные.

Кроме того, я бы посоветовал вам предшествовать всем именам столбцов псевдонимами таблиц.

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