select top 10 * from (select top 60 * from 表名 ) a order by id desc这个不对,要是不是10的整数倍的记录,出来的数据会是乱的.还是这个方法select top 10 * from tablename order by id
exec('select top '+@number+' * from tablename order by newid()')
先取得表中的所有记录数,假如total = 100,假如你要取30-40条的话 total = 100 num = 30 n = 10'这里要判断total-num的值是否 >= n select top n * from (select top total - num * from 表名 order by id desc) a order by id desc
Select top 10 * from tablename order by newid() 随机取10条记录
select top 10 * from tablename order by ?? ?? 是整個表按??排序 的前10條記錄
Select top 10 * from tablename order by newid() 就是随机读十天数据的。楼主可以自己测试下,每次读出的十条数据不一致的。newid()会每次随机生成ID的。
试 试用游标: ---定义游标 declare cursor_name cursor for select tpo 10 * from tablename --既然是随机就不用order by id desc了 ----打开游标 open cursor_name --执行第一次操作 fetch next from cursor --检查@@fetch——status以确定是否可以继续取数 while @@fetch_status=0 begin fetch next from cursor end --关闭游标 close cursor --释放游标 deallocate cursor
total = 100
num = 30
n = 10'这里要判断total-num的值是否 >= n
select top n * from (select top total - num * from 表名 order by id desc) a order by id desc
随机取10条记录
?? 是整個表按??排序 的前10條記錄
就是随机读十天数据的。楼主可以自己测试下,每次读出的十条数据不一致的。newid()会每次随机生成ID的。
---定义游标
declare cursor_name cursor
for select tpo 10 *
from tablename --既然是随机就不用order by id desc了
----打开游标
open cursor_name
--执行第一次操作
fetch next from cursor
--检查@@fetch——status以确定是否可以继续取数
while @@fetch_status=0
begin
fetch next from cursor
end
--关闭游标
close cursor
--释放游标
deallocate cursor
的方法是对的啊!!!应该可以实现!