如何从mysql表中选择最后10行

时间:2012-11-22 15:53:33

标签: mysql syntax row limit

我想运行此查询

select *
from  table
order asc
limit N;

其中N是总行数减去10.

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

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

2 个答案:

答案 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;