Получение ошибки при обновлении SQL-запроса однострочный подзапрос возвращает более одной строки - PullRequest
0 голосов
/ 31 мая 2019

У меня есть 2 таблицы "HOF" и "WE_GROUP_HOF_K"

В таблице "HOF" всего записей "2066666"

В таблице "WE_GROUP_HOF_K" всего "116" записей

У меня есть SQL-запрос, который находит повторяющийся столбец cnicno со столбцом hofid из 2 таблиц "HOF" и "WE_GROUP_HOF_K"

В этом запросе найдено "120" повторяющихся записей cnicno

QUERY:

SELECT hofid, cnicno
     FROM hof 
    WHERE cnicno IN (SELECT cnic_no FROM we_group_hof_k);

В таблице "WE_GROUP_HOF_K" есть 1 пустой столбец "GROUP_HOF_ID". Теперь я хочу обновить повторяющиеся записи столбца "HOFID" в столбец "GROUP_HOF_ID"

Я получаю эту ошибку при обновлении записей:

ORA-01427: single-row subquery returns more than one row

Обновление SQL-запроса:

UPDATE we_group_hof_k wg
 SET wg.GROUP_HOF_ID =
      (SELECT h.hofid
         FROM hof h
        WHERE h.cnicno = wg.cnic_no);

1 Ответ

0 голосов
/ 31 мая 2019

Если все CNICNO с одинаковыми HOFID, используйте DISTINCT:

UPDATE we_group_hof_k wg
 SET wg.GROUP_HOF_ID =
      (SELECT DISTINCT h.hofid           --> here
         FROM hof h
        WHERE h.cnicno = wg.cnic_no);

Если нет, то какую HOFID вы хотите взять? MIN или MAX также помогут, например,

UPDATE we_group_hof_k wg
 SET wg.GROUP_HOF_ID =
      (SELECT MIN(h.hofid)               --> here
         FROM hof h
        WHERE h.cnicno = wg.cnic_no);
...