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

时间:2018-09-25 18:20:30

标签: php sql pdo sqlite

假设我有一个看起来像这样的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 :(得分:3)

您可以使用子查询来获取id作为最后一次启动,然后使用它进行过滤:

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

答案 1 :(得分:0)

Badcash:

我会建议准确 Gordon Linoff的建议。

执行此操作的一个好方法是利用子查询。假设您提供的示例中数据库的结构保持不变,并且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');