SQL:获取一个元素的行号的最有效方法
SQL: the most effective way to get row number of one element
我有table个人:
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)?我的意思是我不需要任何其他数据。我只需要一件事——知道 id=3 的人在区间 WHERE ID>1 AND ID<5
中的行位置。
如果可能的话,我希望获得的不是特定于供应商的解决方案,而是通用的 sql 解决方案。如果不可能,那么我需要 postgresql 和 h2.
的解决方案
行号是间隔中第一行与您要查找的行之间的行数。对于间隔 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
)
如果该行不存在,这将 return 0
。
我有table个人:
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)?我的意思是我不需要任何其他数据。我只需要一件事——知道 id=3 的人在区间 WHERE ID>1 AND ID<5
中的行位置。
如果可能的话,我希望获得的不是特定于供应商的解决方案,而是通用的 sql 解决方案。如果不可能,那么我需要 postgresql 和 h2.
的解决方案行号是间隔中第一行与您要查找的行之间的行数。对于间隔 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
)
如果该行不存在,这将 return 0
。