SQL UPDATE при выполнении условия
Помогите пожалуйста с апдейтом, кейс следующий:
Есть таблица TABLE1 : SITEORDER - уникальный номер заказа в БД, SITELINE - уникальная строка заказа в БД
Необходимо выполнить апдейт поля SITESTAT=0 где SITEVAL=2, если для уникального номера SITEORDER нет пустых значений в поле SITEVAL.
На основе таблицы выше я ожидаю, что апдейт выполнит изменения для 5, 14 и 15 строки:
Набросал такое, но вижу явно что-то упускаю, так как ничего не апдейчу, хоть должно быть 3 строки :(
UPDATE TABLE1
SET SITESTAT = 0
WHERE SITEORDER = SITEORDER
AND SITEVAL = 2
AND NOT EXISTS (SELECT NULL
FROM TABLE1
WHERE SITEORDER = SITEORDER
AND SITEVAL IS NULL);
Ответы (2 шт):
Автор решения: Akina
→ Ссылка
UPDATE table t1
NATURAL JOIN ( SELECT siteorder
FROM table
GROUP BY 1
HAVING NOT SUM(siteval IS NULL)
) t2
SET t1.sitestat = 0
WHERE t1.siteval = 2
Автор решения: Albert
→ Ссылка
UPDATE TABLE1 L
SET L.SITESTAT = 0
WHERE L.SITEVAL = 2
AND NOT IN (SELECT C.SITEORDER
FROM TABLE1 C
WHERE C.SITEVAL IS NULL
GROUP BY C.SITEORDER);

