[英]SQL Query to Select the 'Next' record (similar to First or Top N)
如果某個記錄不存在,我需要進行查詢以返回下一個(或上一個)記錄。 例如,請考慮下表:
ID (primary key) value
1 John
3 Bob
9 Mike
10 Tom.
如果7不存在,我想查詢id為7或更大的記錄。
我的問題是,
謝謝!
是的,這是可能的,但實現將取決於您的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
)
試試這個MS-SQL:
SELECT TOP 1
id, value
FROM your_table
WHERE id >= 7
ORDER BY id
或者對於MySql
SELECT id, value
FROM your_table
WHERE id >= 7
ORDER BY id
LIMIT 0,1
我會這樣做:
select top 1 * from myTable where id >=7
order by id
top 1
部分的實現是T-SQL(MSSQL / Sybase),其他實現各不相同但總是可行的(mysql / postgre LIMIT 1
,oracle rownum = 1
)
select top 1 * from Persons where Id >= @Id order by Id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.