SQLite-запрос с ограниченным ORDER BY - PullRequest
0 голосов
/ 01 июня 2018

У меня есть следующая таблица:

date       |  id
-----------|------
unixtime_1 |  2
unixtime_1 |  7
unixtime_1 |  9
unixtime_1 |  24
unixtime_1 |  29
unixtime_1 |  21
unixtime_2 |  8

Пока я получаю результаты из такой таблицы:

SELECT date, id FROM table ORDER BY date DESC, id ASC

и я получаю

unixtime_1 |  2
unixtime_1 |  7
unixtime_1 |  9
unixtime_1 |  21
unixtime_1 |  24
unixtime_1 |  29
unixtime_2 |  8

Мне было интересно, смогу ли я LIMIT получить результат, чтобы в диапазоне id=1-10 id=11-20 и id=21-30 я мог получить в результате только запись с более высоким идентификатором.Итак:

unixtime_1 |  9
unixtime_1 |  29

Поскольку для идентификатора range=11-20 нет никаких записей, следует пропустить диапазон. Диапазон теперь составляет 1-10, 11-20, 21-30, но это настраиваемые диапазоны , установленные мной в соответствии с запросом пользователя , поэтому я должен иметь возможность изменить их .

Возможно ли это с помощью запроса?

Спасибо

Ответы [ 3 ]

0 голосов
/ 01 июня 2018

Если я правильно понял и если ваш диапазон - id = 1-3

, вы можете просто сделать:

SELECT id, date FROM table WHERE id>=1 AND id<=3 ORDER by id DESC, date DESC limit 1;

, это даст вам только 1 запись с самым высоким идентификатором вдиапазон id = 1-3.

вы можете сохранить его и выполнить другой запрос для другого диапазона и объединить их позже

0 голосов
/ 02 июня 2018

Попробуйте это:

ВЫБЕРИТЕ дату, МАКС (ID) ИЗ таблицы ГРУППА ПО дате *

0 голосов
/ 01 июня 2018

Ваше последнее требование должно быть возможно выполнить, просто сгруппировав по дате и (id - 1) / <some_number>, где в вашем примере <some_number> будет равно 10.

SELECT t1.*
FROM yourTable t1
INNER JOIN
(
    SELECT date, (id - 1) / 10 AS id_grp, MAX(id) AS max_id
    FROM yourTable
    GROUP BY date, (id - 1) / 10
) t2
    ON t1.date = t2.date AND t1.id = t2.max_id
ORDER BY
    t1.date, t1.id;

Вы можете выбрать любой диапазон, который хотите 1 - num, просто заменив 10 в моем запросе концом диапазона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...