仅选择ID高于符合特定条件的最后一个行?



假设我有一个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(中执行此操作?

您可以使用子查询获取上次启动的id,然后将其用于筛选:

select t.*
from t
where t.id >= (select max(t2.id) from t t2 where t2.command = 'start');

Badcash:

我会完全按照戈登·利诺夫的建议提出。

执行此操作的一个好方法是使用子查询。假设数据库的结构与您给出的示例相同,并且 ID 按顺序递增,您可以找到最后一个 START 命令的 ID(使用子查询(,然后使用该子查询在主查询中进行筛选。你可以考虑这样的事情:

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

最新更新