Oracle SQL; Обновление столбца в соответствии с условием в другой таблице

#sql #oracle #sql-update

#sql #Oracle #sql-обновление

Вопрос:

У меня есть этот код:

 UPDATE Properties pr
SET price = 5000
WHERE EXISTS (SELECT cm.propertyno 
              FROM Comments cm
              GROUP BY cm.propertyno
              HAVING COUNT(cm.propertyno) < 2);
  

Я хочу обновить столбец в таблице свойств на основе условия столбца в таблице комментариев. Когда я запускаю приведенный выше код, все строки обновляются. В то время как я хочу, чтобы строки с менее чем 2 свойствами в таблице комментариев были обновлены.

Структура таблиц:

Таблица

Таблица

Комментарии:

1. Пожалуйста, скопируйте и вставьте структуры вашей таблицы в виде кода, а не в виде изображений. Для такого простого вопроса это нормально, но в целом изображения нельзя повторно использовать для генерации примера кода для ответа.

Ответ №1:

Используйте коррелированный подзапрос:

 UPDATE Properties pr
    SET price = 5000
    WHERE EXISTS (SELECT cm.propertyno 
                  FROM Comments cm 
                  WHERE cm.propertyno = pr.propertyno
                  GROUP BY cm.propertyno
                  HAVING COUNT(cm.propertyno) < 2
                 );
  

Ваша версия просто проверяет GROUP BY , возвращает ли запрос какие-либо строки — и, предположительно, это так. Нет подключения к внешнему запросу.

Предположительно, это соединение включено propertyno .