2011-09-05 128 views
1

如何獲取SQLite3數據庫中特定行的偏移量?我不是在談論ROWID,它不是線性的,我正在討論表中第一個ROWID的特定ROWID的偏移量/位置。在SQLite3中獲取ROWID的偏移量

這類似於SELECT COUNT(rowid) FROM table WHERE rowid < row,它返回row標識的行之前的行數。我覺得這太慢了,所以我希望有另一種方式,比這更快,這會給我一個表中的一行的偏移/位置。

回答

1
select top 1 
    rowid 
from 
    table 
where 
    rowid < row 
order by 
    rowid desc 

這應該給你在你的行之前最大的rowid。你也可以嘗試...

select 
    max(rowid) 
from 
    table 
where 
    rowid < row 

......但根據我的經驗,第一個選項表現更好。

如果您只想要目標行前面的行數。使用...

SELECT COUNT(1) FROM table WHERE rowid < row 

基本上你以前有過,但沒有指定一列,否則它將不得不在計數時檢查該列是否爲空值。

不幸的是,您無權像訪問MS SQL一樣訪問「ROW_NUMBER()」函數。

(Similiar問題有關SQLLite和編號)

sqlite equivalent of row_number() over (partition by ...?

希望這有助於。