加入收藏 | 设为首页 | 会员中心 | 我要投稿 厦门网 (https://www.xiamenwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

SQL查询选择“下一步”记录(类似于第一个或前N个)

发布时间:2021-02-23 09:08:29 所属栏目:编程 来源:网络整理
导读:如果某个记录不存在,我需要进行查询以返回下一个(或上一个)记录.例如,请考虑下表: ID (primary key) value1 John3 Bob9 Mike10 Tom. 如果7不存在,我想查询id为7或更大的记录. 我的问题是, SQL可以使用这些类型的查询吗? 在DB世界中调用了哪些此类查询? 谢

如果某个记录不存在,我需要进行查询以返回下一个(或上一个)记录.例如,请考虑下表:

ID (primary key)    value
1                    John
3                    Bob
9                    Mike
10                   Tom.

如果7不存在,我想查询id为7或更大的记录.

我的问题是,

> SQL可以使用这些类型的查询吗?
>在DB世界中调用了哪些此类查询?

谢谢!

解决方法

是的,这是可能的,但实现将取决于您的RDBMS.

这是它在MySQL,PostgreSQL和SQLite中的样子:

select ID,value
from YourTable
where id >= 7
order by id
limit 1

在MS SQL-Server,Sybase和MS-Access中:

select top 1 ID,value
from YourTable
where id >= 7
order by id

在Oracle中:

select * from (
    select ID,value
    from YourTable
    where id >= 7 
    order by id
)
where rownum = 1

在Firebird和Informix中:

select first 1 ID,value
from YourTable
where id >= 7
order by id

在DB / 2中(此语法在SQL-2008标准中):

select id,value
from YourTable
where id >= 7
order by id
fetch first 1 rows only

在那些具有“窗口”功能的RDBMS中(在SQL-2003标准中):

select ID,Value
from (
  select 
    ROW_NUMBER() OVER (ORDER BY id) as rownumber,Id,Value
  from YourTable
  where id >= 7
) as tmp                  --- remove the "as" for Oracle
where rownumber = 1

如果您不确定您拥有哪种RDBMS:

select ID,value
from YourTable
where id = 
      ( select min(id)
        from YourTable
        where id >= 7
      )

(编辑:厦门网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读