Обновите поля даты из значений, возвращаемых из подзапроса Oracle SQL
У меня есть приложение, которое сканирует таблицу на наличие идентификаторов, которые не имеют обработанной даты. Когда идентификатор обрабатывается, дата процесса добавляется в таблицу 1, и вся запись копируется в другую таблицу (таблица 2), если она завершает приложение.
Мне нужно сравнить идентификаторы в таблицах, ища идентификаторы из таблицы 1, которых нет в таблице 2, но есть дата, когда они были обработаны. Это признак того, что идентификатор был обработан, но никогда не доходил до конца приложения и по пути не удался.
Затем мне нужно обновить эти идентификаторы (записи) из таблицы 1, установив нулевую дату обработки, чтобы приложение подобрало ее при следующем запуске.
Вот запрос, который получает нужные мне идентификаторы.
SELECT Subject_Number
From Table1
WHERE NOT EXISTS(SELECT NULL
FROM Table2
WHERE Table2.Subject_Number = Table1.Subject_Number)
AND Table1.Processed_Date IS NOT NULL.
Теперь мне просто нужно обновить обработанную дату до нуля для идентификаторов, которые она возвращает.
Любая помощь будет оценена.
1 ответ
Этот запрос что-то вроде этого
UPDATE <table> SET <fields> WHERE <table.id> IN (
SELECT Subject_Number
From Table1
WHERE NOT EXISTS(
SELECT NULL
FROM Table2
WHERE Table2.Subject_Number = Table1.Subject_Number)
AND Table1.Processed_Date IS NOT NULL.)