You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取SQLite按rowid倒序查询结果中指定项的位置

获取指定记录在查询结果中的位置

针对你的需求,有两种常用方法可以获取"B"在SELECT MyText FROM MyTable ORDER BY rowid DESC结果中的位置:

方法一:使用窗口函数(SQLite 3.25.0+)

利用ROW_NUMBER()窗口函数给排序后的结果分配行号,再筛选目标记录的行号:

SELECT row_num
FROM (
    SELECT MyText, ROW_NUMBER() OVER (ORDER BY rowid DESC) AS row_num
    FROM MyTable
) AS ranked
WHERE MyText = 'B';

内层查询会按rowid倒序给每条记录生成递增的行号,外层查询直接提取"MyText"为"B"的行号,执行后会返回2。

方法二:兼容旧版SQLite(无窗口函数支持)

通过自连接统计目标记录之前的行数,再加1得到位置:

SELECT COUNT(*) + 1 AS row_num
FROM MyTable
WHERE rowid > (SELECT rowid FROM MyTable WHERE MyText = 'B');

原理是:按rowid倒序时,rowid比"B"更大的记录会排在它前面,统计这些记录的数量再加1,就是"B"的位置。

内容的提问来源于stack exchange,提问作者JnLlnd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 08:58:13