Допустим, у нас есть таблица со столбцами DAY и NUMERO.
Может быть множество строк с одинаковым значением DAY, но NUMERO всегда уникален.
Что может быть наиболее эффективнымспособ получить элемент, непосредственно предшествующий существующей паре (DAY, NUMERO) в списке, упорядоченном по DAY, NUMERO?
Я уточнил, что мне это нужно для mysql, и я не хочу добавлять определенный индекс (вот почему я просто не использую линейную функцию DAY и NUMERO).
Вот упорядоченный тестовый пример:
DAY | NUMERO
1 | 11
1 | 12
1 | 15
4 | 7
4 | 9
4 | 14
5 | 8
6 | 10
6 | 19
Мой запрос должен сделать это:
(1,11) => ничего
(1,15) => (1,12)
(4,7) => (1,15)
(4,9) => (4,7)
(4,14) => (4,9)
РЕДАКТИРОВАТЬ:
Мое лучшее решение на данный момент - иметь два последовательных запроса:
select * from item where day=? and numero<? order by day desc, numero desc limit 1;
select * from item where day<? order by day desc, numero desc limit 1;
Если первый запрос дает результат, мне не нужно запускать второй.
Аналогичное решениебыло бы использовать союз, но MySQL, кажется, не разрешает союзс более чем одним столбцом.
Оба решения выглядят слишком тяжелыми для проблемы, кажущейся такой простой ...