反转SQLite中结果集的顺序

Posted

技术标签:

【中文标题】反转SQLite中结果集的顺序【英文标题】:Reverse the order of the result set in SQLite 【发布时间】:2012-05-18 18:36:44 【问题描述】:

这可能是一个非常基本的问题,但我有点不懂 SQL。

为了简化问题,设一个只有一列的表格,这样我就可以水平写下行:

1 3 11 39 41 45 52 63 66 70 72 80 81 90 92 97

如您所见,它们已排序。现在,我知道有“70”的行,我想按升序查询它之前的五行。也就是说,我想要

41 45 52 63 66

我应该如何查询?

我可以按降序查询五行,然后将结果集反转,但我认为应该有更好的方法。

【问题讨论】:

【参考方案1】:

以下是我能够提出的查询,但我不确定这是否是您需要的,而且结果是按降序排列的。

我创建了一个表 SAMPLE,其中 index1 作为其唯一的列:

SELECT * FROM SAMPLE WHERE index1 < 70 ORDER BY index1 DESC LIMIT 0,5;

【讨论】:

这就是为什么我的问题称为“反转结果集的顺序”。我只知道降序查询。【参考方案2】:

取likeToCode's example,修改如下,重新排序结果:

SELECT * FROM (
    SELECT *
    FROM SAMPLE
    WHERE index1 < 70
    ORDER BY index1 DESC
    LIMIT 0,5
)
ORDER BY index1 ASC;

【讨论】:

以上是关于反转SQLite中结果集的顺序的主要内容,如果未能解决你的问题,请参考以下文章

使用具有“order by”组件的窗口函数时,结果集的顺序是啥?

Oracle中函数/过程返回结果集的几种方式

php中mysqli 处理查询结果集的几个方法

从返回多个结果集的存储过程中插入临时表

ORACLE 中rownum和row_number()的使用区别(可指定取sql结果集的第几个数据)

如何在 SQL 查询中获取结果集的字节大小?