通过 sqlite 根据特定条件获取行号

Posted

技术标签:

【中文标题】通过 sqlite 根据特定条件获取行号【英文标题】:Get Row Number according to a specific condition by sqlite 【发布时间】:2020-12-18 21:28:06 【问题描述】:

我有 3 张桌子:

所以我需要一个 SQLite 查询来显示 s_id=7 的行号(这里必须是 3)

我在互联网上搜索太多以找到提示但我没有找到!如果有人可以帮助我,那将是完美的。

【问题讨论】:

请阅读您使用的标签的标签信息,并按照此处所述提供 MRE。 ***.com/tags/sqlite/info 还要描述你尝试了什么以及它是如何失败的。描述你想要什么在这里不被视为问题。 明天行号可能不是3。如果您需要 7 以外的 id,则该字段需要包含在 Section 表中。 生成3 for s_id`7的逻辑是什么?请解释您要做什么。 我想知道值 s_id= 7 的行号,所以如果你查看 Section Table 你会看到 s_id=7 是 3ed 行!明天可以是 2 还是 1 都没有关系,我想得到它的值的实际行号 【参考方案1】:

你可以像这样使用窗口函数:

select *
from (
    select s_id, row_number() over(order by s_id) as rn
    from section
) s
where s_id = 7

或者,如果您的 SQLite 版本不支持窗口函数,您可以使用子查询:

select s_id,
    (select count(*) from section s1 where s1.s_id <= s.id) as rn
from section s
where s_id = 7

【讨论】:

以上是关于通过 sqlite 根据特定条件获取行号的主要内容,如果未能解决你的问题,请参考以下文章

Sqlit--学习教程(简介)

Android SQLit数据库学习

sqlite 获取行号并为每个组重置

Sqlit--学习教程(建立数据库表)

Sqlit--学习教程(命令)

sqlite 的基本使用3