Sql 选择最后一行,但仅当列值为预期值时

Sql 选择最后一行,但仅当列值为预期值时,sql,Sql,我的桌子 --------------------- id | userid | name --------------------- 0 1 John 1 2 Ellen 2 1 Peter --------------------- 此表显示,John已将其姓名更改为Peter(相同的userid-相同的人),因为id=2比id=0 现在。。。我可能想检查John是否是userid=1的姓。我需要选择最后一行的id,其中useri

我的桌子

---------------------
id | userid | name
---------------------
0     1       John
1     2       Ellen
2     1       Peter
---------------------
此表显示,
John
已将其姓名更改为
Peter
(相同的
userid
-相同的人),因为
id
=2比id=
0

现在。。。我可能想检查
John
是否是
userid
=1的姓。我需要选择最后一行的
id
,其中
userid
=1,但前提是
name
=
John
。由于在这种特殊情况下,
userid
=1的最后一行中的
name
不是
John
,因此应该返回NULL。我该怎么做?使用单个SQL命令。谢谢


顺便说一句,我正在使用Sqlite3,一些高级MySQL的东西在我的情况下可能不起作用

好吧,一种方法是使用
orderby
并将结果限制在一行:

select (case when name = 'John' then name end)
from t
where userid = 1
order by id desc
fetch first 1 row only;

这使用了
fetchfirst
子句,因为它是标准SQL。您的数据库可能有另一种方法。

这回答了问题,非常感谢!