首页 > 解决方案 > 选择最后一行,但仅当列值是预期值时

问题描述

我的桌子

---------------------
id | userid | name
---------------------
0     1       John
1     2       Ellen
2     1       Peter
---------------------

该表显示,John将他的名字更改为Peter(相同userid- 同一个人),因为id=2 比 id= 更新记录0

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

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

标签: sql

解决方案


好吧,一种方法是使用order by并将结果限制为一行:

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

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


推荐阅读