获取sqlite中的上一条/下一条记录

Posted

技术标签:

【中文标题】获取sqlite中的上一条/下一条记录【英文标题】:Get previous / next record in sqlite 【发布时间】:2013-05-25 13:33:24 【问题描述】:

目前我的查询如下所示:

SELECT name FROM items
  WHERE something = "foo"
AND name > (SELECT name FROM items WHERE name = ?)
GROUP BY name
ORDER BY name ASC
LIMIT 1

(找到它here)

它似乎有效,但如果我将> 更改为<(以获取以前的记录),我没有得到任何结果,即使我知道有:(

我做错了什么?

name 是一个 TEXT 字段,但我希望能够按任何其他字段排序,因此我希望我的查询适用于任何类型。

【问题讨论】:

【参考方案1】:

要以这种方式获取上一行,您将按降序而不是升序对名称进行排序,否则您将始终获得第一个名称。另外:在这种情况下,最好使用select distinct 而不是group by

SELECT DISTINCT name FROM items
WHERE something = 'foo'
AND name < (SELECT name FROM items WHERE name = ...)
ORDER BY name DESC
LIMIT 1

这适用于 sqlfiddle:http://sqlfiddle.com/#!7/a9f68/3/0

【讨论】:

【参考方案2】:

尝试使用 strcmp(),详见http://www.sqlite.org/datatypes.html

我认为您的一个问题可能是您的&gt; 没有像您最初怀疑的那样工作。

【讨论】:

以上是关于获取sqlite中的上一条/下一条记录的主要内容,如果未能解决你的问题,请参考以下文章

“kotlin”sqlite 查询一条记录

SQL如何获取上一条..下一条..首尾记录...

sqlite数据库中的唯一ID用完

mysql获取上一条和下一条记录id

MYSQL - 按 ID 获取下一条和上一条记录 - 超链接的 HTML

如何获取SQL查询当前数据上一条和下一条的记录?