Выбор следующих n строк из таблицы на основе заданного значения строки и столбца - PullRequest
3 голосов
/ 13 июля 2011

В настоящее время я пытаюсь получить следующие или предыдущие n строк из таблицы, следующие 50 для аргумента.

Я буду знать строку, которая может находиться в любом месте данных, и я захочу получить следующие 50 или предыдущие 50 на основе столбца метки времени. Проблема заключается в том, что столбец метки времени не обязательно находится в порядке (хотя, вероятно, он будет), поэтому поэтому следующая строка в данных может иметь неправильную метку времени.

Полагаю, лучший способ сделать это - создать временную таблицу, отбросить все отметки времени до или после заданной строки (в зависимости от того, ищите ли вы предыдущий или следующий 50), отсортировать по отметке времени и затем выбрать следующие / предыдущие 50 строк? Я не очень разбираюсь в SQL за пределами основ.

Заранее спасибо.

1 Ответ

4 голосов
/ 13 июля 2011
SELECT  *
FROM    mytable m
WHERE   (ts, id) <
        (
        SELECT  ts, id
        FROM    mytable mi
        WHERE   mi.id = :myid
        )
ORDER BY
        ts DESC, id DESC
LIMIT 50
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...