Я пытаюсь сделать оператор SQL, который обновляет определенные строки в столбце «статус» таблицы с «НЕ ОК» на «ОК», но только для строк с предоставленным идентификатором и статусом.
Данные в таблице (table1.id, table1.status) = [ID1, ОЖИДАНИЕ], [ID2, НЕ ОК], [ID3, НЕ ОК]
Список идентификаторов будет передан из java в часть «in ()», у меня есть только идентификатор и нет данных о состоянии. Обратите внимание, что статус ID1 отличается от «НЕ ОК».
Код, который у меня есть до сих пор;
UPDATE table1
SET table1.status = 'OK'
WHERE table1.status = 'NOT OK' AND table1.id in ('ID1', 'ID2', 'ID3')
Если список внутри скобок содержит все идентификаторы с пометкой «НЕ ОК», изменения будут внесены во все идентификаторы в скобках. Но если один из идентификаторов содержит другой статус, он не внесет никаких изменений.
Оператор должен игнорировать ID1, потому что его статус не «НЕ ОК», но все же изменить статус на OK для ID2 и ID3. Как можно исправить код? Примечание. Мне не разрешено использовать Создать таблицу (даже временную) из-за ограничений привилегий.
Я мог сделать два вызова SQL; сначала выбрать по идентификатору, где статус = не в порядке, затем, во-вторых, сделать этот оператор обновления без части «ГДЕ table1.status = 'не в порядке'», но я пытаюсь избежать этого, если это возможно
1
имел статусNOT OK
до выполнения запроса, как узнать, повлиял ли на него запрос? - person GMB   schedule 27.05.2020