Обновите поля даты из значений, возвращаемых из подзапроса 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.)
Другие вопросы по тегам