当桌子处于升序时,有人能告诉我如何获取最后50个(或最后n个记录)吗?
答案 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秒。