SQL排序有限制? (非平凡的)

时间:2009-05-25 23:58:09

标签: java sql

table {
  id: long
  name: string
}

1235 Fred
1902 Trever
5123 George
6467 Derek
7868 Joe
8972 Bob
9272 Alf
9842 Hank

我希望以升序顺序返回Joes之前的2条记录。

即正确的值应为:

5123 George
6467 Derek

有什么想法?供参考:

  1. 返回不正确的行:

    从id为< 7868的表中选择*,按id asc limit 2

  2. 返回错误的排序顺序:

    从id为< 7868的表格中选择*来自id desc limit 2

3 个答案:

答案 0 :(得分:4)

SELECT * FROM
  (select * from table where id<7868 order by id desc limit 2) AS foo
ORDER BY ID ASC

答案 1 :(得分:1)

尝试:

Select * from (
    select * from table with id<7868 
    order by id desc limit 2
) as t order by id asc

执行子查询可以让您首先获得正确的行,然后您可以在之后重新排序

答案 2 :(得分:0)

在PostgreSQL中:

从“table”中选择*,其中id&lt; 7868按id列出asc limit 2 offset 2

同样在MySQL(我相信)“限制2,2”

“LIMIT 2 OFFSET 2”也适用于SQLite,至少我试过的版本(3.6.13)