如何随机取记录?(MSSQL、Access、MySql) |
1、数据量少的时候可以使用sql自带的newid()函数 ZlLpwE http://blog.numino.net/ select top 7 from table order by newid() qH723D http://blog.numino.net/ select top 5 a.columName from (select distinct columName from tableName) a order by newid() EbRka0 http://blog.numino.net/ 2、数据量大则不适合用上述方法了,简单算法: 9HLT1O http://blog.numino.net/ 统计表里所有的数据 N,然后返回一个小于N的随机数,再选择一条ID大于N就行了! C291p8 http://blog.numino.net/ 随机提取10条记录的例子: tFM0JE http://blog.numino.net/ Sql server: qu3k0O http://blog.numino.net/ select top 10 * from 表 order by newid() CT1222 http://blog.numino.net/ Access: I6kKO9 http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) tHOmgW http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 cvo014 http://blog.numino.net/ 比如用姓名字段(UserName) z41e78 http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) BI31E8 http://blog.numino.net/ MySql: 49pwF0 http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 1eqFLc http://blog.numino.net/ ========================================================== up2IMn http://blog.numino.net/ ACCESS可以用RND函数结合ASP中的RND函数来实现随机抽取。 CHC41z http://blog.numino.net/ <% 36H4GB http://blog.numino.net/ ... WAYTK1 http://blog.numino.net/ Randomize CG8ZDp http://blog.numino.net/ strSQL = "SELECT TOP 1 字段列表 FROM 表名 ORDER BY RND(-(编号字段)*" & RND() & ")" mbWZR2 http://blog.numino.net/ ... Jc4r3B http://blog.numino.net/ %> URuq9W http://blog.numino.net/ =============================================== 0i23Pp http://blog.numino.net/ 要产生指定范围的随机整数,请使用以下公式: uISjFD http://blog.numino.net/ Int((upperbound - lowerbound + 1) * Rnd + lowerbound) J5R8rU http://blog.numino.net/ 这里, upperbound 是此范围的上界,而 lowerbound 是此范围内的下界 eERyha http://blog.numino.net/ ========================================================== pK3CWh http://blog.numino.net/ 随机提取10条记录的例子: VGpv6u http://blog.numino.net/ Sql server: n5nS08 http://blog.numino.net/ select top 10 * from 表 order by newid() ZU6XDn http://blog.numino.net/ Access: OpZ5In http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) nDVGD3 http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 tD38Ce http://blog.numino.net/ 比如用姓名字段(UserName) U3YSdi http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) LJ7qbe http://blog.numino.net/ MySql: v9guZO http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 P3Po0k http://blog.numino.net/ GqfuK7 http://blog.numino.net/ HTCWUt http://blog.numino.net/ ======================================================== v2MZtq http://blog.numino.net/ select top 4 * from DataTable order by rnd(-(id+rnd())) p9VOya http://blog.numino.net/ w0pdf1 http://blog.numino.net/ ===================================================== i0bi1J http://blog.numino.net/ ASP&Access随机读取某段数据 IrMq2X http://blog.numino.net/ 在网上也搜索了很多,分享下我的方法... ZviyOu http://blog.numino.net/ 以下是源代码: 7bvv6W http://blog.numino.net/ Randomize(Timer()) r8Wl95 http://blog.numino.net/ SQL = "SELECT TOP 100 ID FROM table1 ORDER BY Rnd(-(ID + " & Int((10000 * Rnd) + 1) & "))" p31490 http://blog.numino.net/ Set RS = Server.CreateObject("ADODB.RecordSet") 75C1T8 http://blog.numino.net/ RS.Open SQL,Conn,1,1 DbHD12 http://blog.numino.net/ If Not RS.EOF Then D0dmtZ http://blog.numino.net/ RS.MoveFirst wqnXGU http://blog.numino.net/ For I = 1 To RS.RecordCount i32e6I http://blog.numino.net/ Response.Write RS(0) & "<br>" 3nICHh http://blog.numino.net/ RS.MoveNext 1DXC6s http://blog.numino.net/ Next 6w3bgU http://blog.numino.net/ End If VN85sO http://blog.numino.net/ RS.Close 59myGO http://blog.numino.net/ Set RS = Nothing
|
|