升序中的SQL表+获取最近50条记录

时间:2014-05-05 09:57:22

标签: sql

当桌子处于升序时,有人能告诉我如何获取最后50个(或最后n个记录)吗?

3 个答案:

答案 0 :(得分:2)

您可以使用 - limit或TOP来解决它。

有限制 -

SELECT  col1,col2,..  from table_name ORDER BY col_name DESC limit 50

顶部 -

SELECT TOP 50 col1,col2,.. from  table_name ORDER BY col_name DESC

答案 1 :(得分:0)

试试这个:

SQL Server:

SELECT TOP 50 *
  FROM TableName
  ORDER BY ColName DESC
ORDER BY ColName

<强> MySQL的:

SELECT * 
  FROM TableName
  ORDER BY ColName DESC
  LIMIT 50

如果您希望按结果按ColName的升序再次排序(如表中所示),则可以使用外部查询来更改order by。像:

SELECT * FROM
(SELECT TOP 50 *
  FROM TableName
  ORDER BY ColName DESC) T
ORDER BY ColName

答案 2 :(得分:0)

我知道这篇文章已经过时但不得不分享这个解决方案。

我也在这个问题上挣扎了一段时间,但今天午夜时分,它像一块石头一样击中了我。以下适用于SQL Server,并具有非常快的返回时间。它以ASC顺序返回记录。

SELECT * FROM table1
WHERE column1 in (
     SELECT TOP(50) column1 FROM Table1
     ORDER BY Column1 DESC)
ORDER BY Column1

注意:在一个包含大约300 000行的20列表中将TOP(50)更改为TOP(5000),需要SQL Server 3秒。