| 如何随机取记录?(MSSQL、Access、MySql) |
1、数据量少的时候可以使用sql自带的newid()函数 sprO13 http://blog.numino.net/ select top 7 from table order by newid() G03sYe http://blog.numino.net/ select top 5 a.columName from (select distinct columName from tableName) a order by newid() Ttmwq1 http://blog.numino.net/ 2、数据量大则不适合用上述方法了,简单算法: 8kH9C5 http://blog.numino.net/ 统计表里所有的数据 N,然后返回一个小于N的随机数,再选择一条ID大于N就行了! PrRUoK http://blog.numino.net/ 随机提取10条记录的例子: S0gEob http://blog.numino.net/ Sql server: 65s2d9 http://blog.numino.net/ select top 10 * from 表 order by newid() m4jzz8 http://blog.numino.net/ Access: eMyRhF http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) FoPPNk http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 m44OW2 http://blog.numino.net/ 比如用姓名字段(UserName) esP2wE http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) 1gr1Px http://blog.numino.net/ MySql: Q8L36n http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 blx43a http://blog.numino.net/ ========================================================== 8kn6Cg http://blog.numino.net/ ACCESS可以用RND函数结合ASP中的RND函数来实现随机抽取。 RqFB7x http://blog.numino.net/ <% JO35aW http://blog.numino.net/ ... T4lkI5 http://blog.numino.net/ Randomize 68JNrq http://blog.numino.net/ strSQL = "SELECT TOP 1 字段列表 FROM 表名 ORDER BY RND(-(编号字段)*" & RND() & ")" 2U155c http://blog.numino.net/ ... kn6ZQr http://blog.numino.net/ %> 35TM69 http://blog.numino.net/ =============================================== 7ivqhY http://blog.numino.net/ 要产生指定范围的随机整数,请使用以下公式: 41Abaq http://blog.numino.net/ Int((upperbound - lowerbound + 1) * Rnd + lowerbound) IIHtw0 http://blog.numino.net/ 这里, upperbound 是此范围的上界,而 lowerbound 是此范围内的下界 H8NTmI http://blog.numino.net/ ========================================================== 2xT54J http://blog.numino.net/ 随机提取10条记录的例子: 1B1OUC http://blog.numino.net/ Sql server: 0fua20 http://blog.numino.net/ select top 10 * from 表 order by newid() fMV23K http://blog.numino.net/ Access: mIL76v http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) q6Z5vG http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 51fQzJ http://blog.numino.net/ 比如用姓名字段(UserName) OgrUt3 http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) JQRp69 http://blog.numino.net/ MySql: 7np0rT http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 WuUHpL http://blog.numino.net/ 4cRJ18 http://blog.numino.net/ lOT1oJ http://blog.numino.net/ ======================================================== Q0lD06 http://blog.numino.net/ select top 4 * from DataTable order by rnd(-(id+rnd())) 8veEB1 http://blog.numino.net/ Hg83tC http://blog.numino.net/ ===================================================== wPHs9C http://blog.numino.net/ ASP&Access随机读取某段数据 LQfT3i http://blog.numino.net/ 在网上也搜索了很多,分享下我的方法... rYY91B http://blog.numino.net/ 以下是源代码: 7gcg0S http://blog.numino.net/ Randomize(Timer()) 0ys8bL http://blog.numino.net/ SQL = "SELECT TOP 100 ID FROM table1 ORDER BY Rnd(-(ID + " & Int((10000 * Rnd) + 1) & "))" fEM2da http://blog.numino.net/ Set RS = Server.CreateObject("ADODB.RecordSet") T2sdL2 http://blog.numino.net/ RS.Open SQL,Conn,1,1 2R39t4 http://blog.numino.net/ If Not RS.EOF Then 4F6G26 http://blog.numino.net/ RS.MoveFirst sYID4G http://blog.numino.net/ For I = 1 To RS.RecordCount Ha9X2u http://blog.numino.net/ Response.Write RS(0) & "<br>" 2C7t52 http://blog.numino.net/ RS.MoveNext G79r8g http://blog.numino.net/ Next 9jcLU5 http://blog.numino.net/ End If wV6TOM http://blog.numino.net/ RS.Close yVDxN7 http://blog.numino.net/ Set RS = Nothing
|
|