求一个sql语句,怎样查询一个表的最后n条记录?

时间:2020-12-23 21:56:09
这个表有主键,但是主键没有任何规律,而且其中也没有可排序的字段

所以我无法使用排序加上 top n 的方式进行查询

要怎么写才能直接查询出最后n条记录呢?如果小于n条,则有几条显示几条

7 个解决方案

#1


select * from t where id not in (select top (count(*) - n) from t)

#2


楼上应该是对的,不过子查询相对来说效率低一下

是否有什么办法直至查询后几条呢?类似于top n直接查询前n条

#3


本来是有,排序(ASC/DESC)后取TOP N,但是你的ID没法排序,就不知道怎么搞了.

#4


是否有什么办法直至查询后几条呢?类似于top n直接查询前n条
可以使用临时表解决。

#5


建临时表带自动增1的id字段
select top 5 * from temp_table order by id desc

#6


插入新的自增的列(仅对SQL 2005有效)
select top 5 * from 
(select *,newid=row_number() over order by column_name)
 from table_name) as a
)
order by newid desc
order by ,用来对column_name 排序,(column 必须是primary or unique)

#7


select top n *
 from tb_bus order by newid() desc

#1


select * from t where id not in (select top (count(*) - n) from t)

#2


楼上应该是对的,不过子查询相对来说效率低一下

是否有什么办法直至查询后几条呢?类似于top n直接查询前n条

#3


本来是有,排序(ASC/DESC)后取TOP N,但是你的ID没法排序,就不知道怎么搞了.

#4


是否有什么办法直至查询后几条呢?类似于top n直接查询前n条
可以使用临时表解决。

#5


建临时表带自动增1的id字段
select top 5 * from temp_table order by id desc

#6


插入新的自增的列(仅对SQL 2005有效)
select top 5 * from 
(select *,newid=row_number() over order by column_name)
 from table_name) as a
)
order by newid desc
order by ,用来对column_name 排序,(column 必须是primary or unique)

#7


select top n *
 from tb_bus order by newid() desc