如何在不获取所有数据的情况下获取select查询中某个元素的索引

时间:2016-03-18 11:51:35

标签: sql sqlite

我们有一些选择声明:

select id, data from mytable order by data;

是否可以在如此有序的数据集中获取给定id的行的索引,而不会将所有行提取到id并计数?

我正在使用sqlite3并且SQL的sqlite方言的答案更好,但是关于通用ANSI SQL的答案也可以。

1 个答案:

答案 0 :(得分:2)

是。您可以使用聚合查询:

select count(*)
from mytable t
where t.data <= (select data from mytable where id = $id);

注意:这假定data是唯一的。如果存在重复项,那么您可能需要等效rank。这看起来像:

select 1 + count(*)
from mytable t
where t.data < (select data from mytable where id = $id);