Я пытаюсь запросить MySQL, чтобы выбрать предыдущую и следующую запись.Мне нужна помощь в совместном использовании COALESCE и DATE_ADD / DATE_SUB.
SELECT * from `Historical` where `DeltaH` = 'ALTF' and `Date`=
COALESCE(DATE_SUB('2019-01-21', INTERVAL 1 DAY),
DATE_SUB('2019-01-21',INTERVAL 2 DAY),
DATE_SUB('2019-01-21', INTERVAL 3 DAY));
Я не могу использовать первичный ключ, поскольку строки в таблице будут / будут удалены.Столбец даты также не обязательно имеет фиксированные даты, я хочу найти следующую более раннюю / более позднюю дату.
SELECT * from `Historical` where `DeltaH` = 'ALTF' and `Date`=
DATE_SUB('2019-01-21', INTERVAL 3 DAY);
Вышеупомянутый запрос, кажется, работает, однако мне нужно запросить INTERVAL 1 DAY,если дата не существует, перейдите в ИНТЕРВАЛ 2 ДНЯ ....
select * from `Historical` where `DeltaH` = 'ALTF' and `Date`=
DATE_SUB('2019-01-21', INTERVAL COALESCE(1,2,3,4,5) DAY);
Эта также не работает.Я понимаю, что функция COALESCE () возвращает первое ненулевое значение, однако я не могу заставить его работать, используя приведенный выше запрос.Я подтвердил, что данные существуют для 2019-01-18, но не выбираются.Вы могли бы посоветовать?
Я согласен с использованием альтернативного решения.