sql - 选择最后一行,但仅当列值是预期值时
问题描述
我的桌子
---------------------
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 的东西可能不适用于我的情况
解决方案
好吧,一种方法是使用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。您的数据库可能有另一种方法。
推荐阅读
- ios - 我可以为 Xcode 9.4.1 安装什么 firebase 版本
- image - 使用 React Native 显示文件夹中的图像
- google-apps-script - 如何在变量中绑定应用程序脚本的版本?
- aix - Check a kernel extension is loaded
- .net-core - 在 Ubuntu 16.04 LTS 上运行 (.Net) Donet Core 3.x 并使用 Plesk 运行 ASP 项目
- python - Django将URL重定向到另一个带有表单的URL
- python - jinja2.exceptions.TemplateNotFound: /register
- git - 如何在 git 中列出所有排除的文件?
- maven - 具有传递多模块依赖关系的 DependencyManagement
- javascript - 如何在笑话测试用例中默认模拟/考虑 javascript 原型函数