#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
.