SQL 查询选择“下一步”记录(类似于First或Top N)
如果某个记录不存在,我需要执行查询以返回下一条(或上一条)记录。例如,考虑下表:
ID (primary key) value
1 John
3 Bob
9 Mike
10 Tom.
如果 7 不存在,我想查询 id 为 7 或更大的记录。
我的问题是,
- 这些类型的查询是否可以使用 SQL 实现?
- 此类查询在数据库世界中被称为什么?
谢谢!
I need to do a query to return the next (or prev) record if a certain record is not present. For instance consider the following table:
ID (primary key) value
1 John
3 Bob
9 Mike
10 Tom.
I'd like to query a record that has id 7 or greater if 7 is not present.
My questions are,
- Are these type of queries possible with SQL?
- What are such queries called in the DB world?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
是的,这是可能的,但实施将取决于您的 RDBMS。
在 MySQL、PostgreSQL 和 SQLite 中:
在 MS SQL-Server、Sybase 和 MS-Access 中:
在 Oracle 中:
在 Firebird 和 Informix 中:
在 DB/2 中(此语法符合 SQL-2008 标准):
在这些 RDBMS 中具有“窗口”函数(在 SQL-2003 标准中):
如果您不确定您拥有哪个 RDBMS:
Yes, it's possible, but implementation will depend on your RDBMS.
Here's what it looks like in MySQL, PostgreSQL and SQLite:
In MS SQL-Server, Sybase and MS-Access:
In Oracle:
In Firebird and Informix:
In DB/2 (this syntax is in SQL-2008 standard):
In those RDBMS that have "window" functions (in SQL-2003 standard):
And if you are not sure which RDBMS you have:
对于 MS-SQL
或 MySql尝试此操作
Try this for MS-SQL:
or for MySql
我会简单地这样做:
top 1
部分的实现是T-SQL(MSSQL/Sybase),其他实现有所不同,但它总是可能的(mysql/postgreLIMIT 1,oracle
rownum = 1
)I would simply do it like this:
implementation of the
top 1
part is T-SQL (MSSQL/Sybase), other implementations vary but it is always possible (mysql/postgreLIMIT 1
, oraclerownum = 1
)