ВЫБРАТЬ только строки с более высоким ID, чем последний, соответствующий определенным критериям? - PullRequest
0 голосов
/ 25 сентября 2018

Допустим, у меня есть база данных SQLite 3, которая выглядит примерно так:

ID    COMMAND     MESSAGE
------------------------------------------
1     start       abc
2     foo         xyz
3     bar         123
4     start       Hello
5     xxx         World
6     yyy         !

Я хочу выбрать только строки после (и включая) последнюю команду start, т.е.

4     start       Hello
5     xxx         World
6     yyy         !

Возможно ли это сделать с чистым SQLite или я должен сделать это в коде приложения (который является PHP)?

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Badcash:

Я бы предложил точно , что предложил Гордон Линофф.

Хороший способ сделать это - использовать подзапросы.Предполагая, что структура вашей базы данных соответствует приведенному вами примеру, и что идентификаторы последовательно увеличиваются, вы можете найти идентификатор последней команды START (используя подзапрос), а затем использовать этот подзапрос для фильтрации в основном запросе.Вы можете рассмотреть что-то вроде этого:

SELECT
    myTable.ID
    myTable.COMMAND,
    myTable.MESSAGE

FROM
    myTable

WHERE
    myTable.ID >= ( SELECT MAX(myNewTable.ID) from myTable myNewTable WHERE myNewTable.COMMAND = 'start');

0 голосов
/ 25 сентября 2018

Вы можете использовать подзапрос, чтобы получить id для последнего запуска, а затем использовать его для фильтрации:

select t.*
from t
where t.id >= (select max(t2.id) from t t2 where t2.command = 'start');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...