#sql #ms-access
Вопрос:
Следующий SQL-запрос не обнаруживает изменений в моей таблице :
SELECT ID FROM Test WHERE TheDate=#21/10/2021# AND NOT EXISTS (SELECT ID FROM Test WHERE TheDate=DateAdd("d", -1, #21/10/2021#))
Например, с помощью этой таблицы :
TheDate ID 21/10/2021 1 21/10/2021 7 20/10/2021 1 20/10/2021 2 20/10/2021 3 19/10/2021 3 18/10/2021 3
Приведенный выше запрос должен возвращать 7.
Моя цель-получить новый идентификатор, которого не существовало 1 день назад.
Что я делаю не так?
Ответ №1:
Существуют записи с этой даты. Попробуйте использовать IN
:
SELECT ID From Test WHERE TheDate=#21/10/2021# AND ID NOT IN (SELECT ID FROM Test WHERE TheDate=DateAdd("d", -1, #21/10/2021#))
Или:
SELECT ID From Test WHERE TheDate=#2021/10/21# AND ID NOT IN (SELECT ID FROM Test WHERE TheDate=DateAdd("d", -1, #2021/10/21#))
Комментарии:
1. И использование 2021 года в ваших тестовых данных — все ваши записи относятся к 2022 году.
2. Да, это так. Но, возможно, вам нужна последовательность ISO для даты. Смотрите расширенный ответ, пожалуйста.
3. Хорошо, Густав,
NOT IN
не работает, если у меня пустое поле. Так что мне удалось это исправить ! Спасибо!