所以我无法使用排序加上 top n 的方式进行查询
要怎么写才能直接查询出最后n条记录呢?如果小于n条,则有几条显示几条
7 个解决方案
#1
select * from t where id not in (select top (count(*) - n) from t)
#2
楼上应该是对的,不过子查询相对来说效率低一下
是否有什么办法直至查询后几条呢?类似于top n直接查询前n条
是否有什么办法直至查询后几条呢?类似于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
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)
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
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条
是否有什么办法直至查询后几条呢?类似于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
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)
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
from tb_bus order by newid() desc