2

我想运行这个查询

select *
from  table
order asc
limit N;

其中 N 是总行数减去 10。

SELECT COUNT(*) FROM (SELECT * FROM table)

返回总数为 189 所以,在这种情况下,我希望我的限制为 179

4

2 回答 2

5

如果顺序不重要,您可以使用以下偏移量limit

请注意,“直到表格结束”没有实际值。MySQL 文档建议对第二个参数使用“一些大数字”。

SELECT *
FROM table1
order by ID DESC
LIMIT 10, 999999999999999

如果您确实希望按升序排列,则可以在之后应用不同的排序:

SELECT 
  * 
FROM
  (SELECT *
  FROM table1
  ORDER BY ID DESC
  LIMIT 10, 999999999999999) x
ORDER BY
  ID ASC
于 2012-11-22T16:25:48.620 回答
0

不确定是否最有效,但如果您只有一个字段作为主键,这应该可以工作。

select *
from T1
where
    T1.id not in (
        select top(10) id
        from T1
        order by id desc
    )
order by
    id;

它将按您的订单获取最后一行,然后您可以按键排除。

编辑:

更好的是,您可以使用左外连接,而不是 not in。

select 
    T1.*
from T1
left outer join ( select top(10) id from Enums_Tables order by id desc ) as T2
on
    T1.id = T2.id
where
    T2.id is null;
于 2012-11-22T16:20:43.710 回答