我想运行此查询
select *
from table
order asc
limit N;
其中N是总行数减去10.
SELECT COUNT(*) FROM (SELECT * FROM table)
将总数返回189,所以在这种情况下,我希望我的限制为179
答案 0 :(得分:3)
如果订单不重要,您可以使用limit
的偏移量:
请注意,“直到结束表”没有实际值。 MySQL Documentation建议对第二个参数使用“some large number”。
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
答案 1 :(得分:0)
不确定是否效率最高,但如果您只有一个字段作为主键,这应该有用。
select *
from T1
where
T1.id not in (
select top(10) id
from T1
order by id desc
)
order by
id;
它将按订单获取最后一行,然后您可以通过密钥排除。
修改强>
更好的是,您可以使用左外连接,而不是不在内。
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;