我有一张人的表:
id | Name | Age
1 | Alex | 18
2 | Peter| 30
3 | Zack | 25
4 | Bim | 30
5 | Ken | 20
我有以下行间隔:WHERE ID>1 AND ID<5
。我知道在这个区间有一个人的id = 3。在这个时间间隔内获取行号的最有效(最快)的方法是什么(在我的例子中rownumber = 2)?我的意思是我不需要任何其他数据。我只需要一件事 - 在区间WHERE ID>1 AND ID<5
中知道id = 3的人的行位置。
如果可能的话,我希望不是供应商特定的解决方案,而是一般的SQL解决方案。如果不可能那么我需要postgresql和h2的解决方案。
答案 0 :(得分:3)
行号将是间隔中第一行与您要查找的行之间的行数。对于时间间隔ID>1 AND ID<5
和目标行ID=3
,这是:
select count(*)
from YourTable
where id between 2 and 3
对于时间间隔ID>314 AND ID<1592
和目标行ID=1000
,您可以使用:
where id between 315 and 1000
要确保存在ID=3
的元素,请使用:
select count(*)
from YourTable
where id between 2 and
(
select id
from YourTable
where id = 3
)
如果该行不存在,则返回0
。