11

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

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

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

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

41 45 52 63 66

我应该如何进行查询?

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

4

2 回答 2

20

likeToCode的例子为例,修改如下,对结果进行重新排序:

SELECT * FROM (
    SELECT *
    FROM SAMPLE
    WHERE index1 < 70
    ORDER BY index1 DESC
    LIMIT 0,5
)
ORDER BY index1 ASC;
于 2012-05-10T12:49:35.127 回答
3

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

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

SELECT * FROM SAMPLE WHERE index1 < 70 ORDER BY index1 DESC LIMIT 0,5;
于 2012-05-10T09:28:31.447 回答