求:从指定表中随机选取若干条记录的SQL语句。
e.g
有一表,表名:dataTable(内有500条记录)
用户想从中随机选取20条记录。
SQL怎么写?
问题点数:20、回复次数:6Top
1 楼paoluo(一天到晚游泳的鱼)回复于 2005-04-04 09:44:29 得分 15
select Top 20 * form dataTable order by newid()Top
2 楼cqthinker(哈儿)回复于 2005-04-04 09:47:38 得分 0
注意是随机!!!Top
3 楼paoluo(一天到晚游泳的鱼)回复于 2005-04-04 09:56:03 得分 0
你试下,这就是随机 啊!!!Top
4 楼fei780511(飞)回复于 2005-04-04 09:56:13 得分 5
建立临时表,结构和datatable一样,随机数,最大值500,
select Top 随机数 * form dataTable order by newid() desc
将第一条插入临时表,重新设置随机数
如此循环20次,最后select * from 临时表
方法苯一点,速度慢一点,但可以实现,如果应用存储过程,速度会好一点。
Top
5 楼cqthinker(哈儿)回复于 2005-04-04 10:40:19 得分 0
行了,谢谢。。
20分,给Top
6 楼paoluo(一天到晚游泳的鱼)回复于 2005-04-04 10:43:32 得分 0
居然写错了一点,改一下。
Select Top 20 * from dataTable Order By NEWID()
再给你介绍一下NEWID()
Sql Server:理解uniqueidentifier类型和NEWID()
uniqueidentifier是全局唯一标识符 (GUID)
NEWID()返回类型为uniqueidentifier
SQL SERVER联机帮助中的例子:
declare @myid uniqueidentifier
set @myid=newid()
print 'Value of @myid is '+cast(@myid as varchar(255))
每次运行以上程序返回不同的uniqueidentifier
--------------------------------------------------------------------------------
NEWID()另外一个应用是在Select出记录时随即选出N条记录
比如:Select top 5 * from yourtable order by newid()
这样就能从yourtable表中每次随机地选出5条记录,这对于随机显示新闻的地方比较有用
Top




