当每次刷新页面时从sql数据库中读取不同10条数据

如题所述

第1个回答  2009-08-06
方法很多,选择适合你的:

对于数据量小的记录可以考虑一下方法实现随机获取记录

select top 1 * from table order by newid()
top后面的数字就是你要随即搜索出来几条数据,这个方法只适用sql server

SELECT top 4 * FROM 表 ORDER BY Rnd([一个自动编号字段])
Randomize
SELECT TOP 5 [TestTitle] FROM [TestTable] ORDER BY Rnd(-(TestID+"&Rnd()&"))
这句适用于ACCESS的

select * from table_name order by rand() [limit num];
mysql的随机查询语句。

参考资料:
order newid()
扫描整表,并对每条记录生成一个无序的不重复的ID,实际查询时每条记录都要插入一newid(),再对插入的newid数据排序,对于大量的数据,效率肯定会很慢.
大量数据时,建议给记录编连续的号码,再用随机函数rand()取记录

提供一个解决方案:
在前台生成一个从1~10000的随机数@rndnum ,然后这样查询
SQL code:SELECT top 10 ID,ClassID,title,title,[content],Author,ComeFrom,AutoPages FROM [Article] where id >= @rndnum order by id
这样试试看,同时如楼上所说,如果content是text等类型,先去掉这个字段

方案1:
DECLARE @i INT
SELECT @i = RAND(CHECKSUM(NEWID())) *10
SELECT TOP 1 * FROM Products WHERE ProductID BETWEEN @i AND @i + 100 ORDER BY NEWID()

方案2:
DECLARE @i INT
SELECT @i = RAND(CHECKSUM(NEWID())) *76 --其中76为总记录数-1,当取前10条则减9.
SELECT TOP 1 * FROM Products WHERE ProductID >=@i

更多这方面的问题可以参考这里:http://www.jc0088.com/Class-3.aspx

参考资料:http://www.jc0088.com/Class-3.aspx

本回答被提问者采纳
第2个回答  2009-08-06
select top 10 * from tableA orderby newid()
第3个回答  2009-08-06
定义一个表态变量,每刷新一次值加1,再根据这个值来取数据.
第4个回答  2009-08-06
麻烦说清楚是JAVA还是JSP,这两个里面的代码有很大区别!

当每次刷新页面时从sql数据库中读取不同10条数据
select top 1 * from table order by newid()top后面的数字就是你要随即搜索出来几条数据,这个方法只适用sql server SELECT top 4 * FROM 表 ORDER BY Rnd([一个自动编号字段])Randomize SELECT TOP 5 [TestTitle] FROM [TestTable] ORDER BY Rnd(-(TestID+"&Rnd()&"))这句适用于ACCESS...

从sql server 数据库中随机取出10条记录
SELECT TOP 3 * FROM UTABLE WHERE UID='123' ORDER BY NEWID()UNION ALL SELECT TOP 7 * FROM UTABLE WHERE UID<>'123' ORDER BY NEWID()说明:newid()是一个随机函数,所以这样就可以查到随机10条记录了 union all 是不消除重复记录进行连接 ...

ASP网页SQL随机选择10条数据
你这个报错不是因为语句问题,而是因为你case的语法错误 请贴出这个页面从第50行到第90行的代码 另外,Rnd(ID)是ACCESS数据库中取字段ID中的随机值 如果你是MSSQL数据库,要用:Select TOP 10 * From shouye_1 Order By Newid()

数据库读取前几条记录的SQL语句大全
1、aess:select top (10) * from table1 where 1=1 2、db2:select column from table where 1=1 fetch first 10 rows only 3、mysql:select * from table1 where 1=1 limit 10 4、sql server:读取前10条:select top (10) * from table1 where 1=1 读取后10条:select top (10)...

如何从数据库中随机取出10条记录的方法
要看什么数据库了,不同的数据库SQL语句不同,不过大体上的原理差不多:select 字段 from 表 order by 随机值

数据库怎样实现每次取数据都接着上次取的位置,并且每次取10条。比如...
如果有自增型的ID号,就可轻松解决这个问题。如果没有类似的ID号,也可以考虑将全部记录都取出来放在临时表或者其他的地方,然后每次10条10条的读取,读取后的记录可以删除掉。

...每刷新一下页面,数据库查询的数据就会多显示一次
应该是因为每次刷新页面被视为回发调用了,foreach代码段每次刷新就被调用了,页面内容就不断增加了。将foreach代码段移到PageLoad方法中去,再在PageLoad方法的代码外层添加if(!IsCallBack){\/\/你自己的代码}。这样信息设置代码就仅会在页面第一次加载时执行一次,刷新也不会重复增加信息了。

怎么从数据库中的一亿条数据中读取我想要的十条数据?
4、尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num=10 or num=20 可以这样查询:select id from t where num=10 union all select id from t where num=20 5、下面的查询也将导致全表扫描:(不能前置百分号)select ...

sql查询数据库最后10条记录并按降序排列
记录如果说有先后的话 必然是根据某几个字段进行排序了的 你反过来排序就变成求前10条记录了呗,把desc和 asc互换一下 (默认是 asc )oracle 的写法 slect from (select from tab order by col desc )where rownum <= 10

请教sql 语句高手,怎么从一个表中检索出第10条到第20条记录,(注:表中...
select top 20 * from 表名 where 条件 and id not in(select top 10 id from 表名 where 条件)效率低了点 但是基本算实现功能了 oracle有方法实现 sql server 这个方法比较简单 创建临时表方法 存储过程利用游标操作效率也不比这个高

相似回答