假设我有一个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');