| 如何随机取记录?(MSSQL、Access、MySql) |
1、数据量少的时候可以使用sql自带的newid()函数 6pE3k6 http://blog.numino.net/ select top 7 from table order by newid() Dr6J8j http://blog.numino.net/ select top 5 a.columName from (select distinct columName from tableName) a order by newid() f4AzDW http://blog.numino.net/ 2、数据量大则不适合用上述方法了,简单算法: ZR8j3g http://blog.numino.net/ 统计表里所有的数据 N,然后返回一个小于N的随机数,再选择一条ID大于N就行了! IqxeNZ http://blog.numino.net/ 随机提取10条记录的例子: LLnZm7 http://blog.numino.net/ Sql server: wZ17u0 http://blog.numino.net/ select top 10 * from 表 order by newid() RaR5uF http://blog.numino.net/ Access: 7ghOee http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) IWR3ay http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 Au0811 http://blog.numino.net/ 比如用姓名字段(UserName) kHuz7z http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) 3v783B http://blog.numino.net/ MySql: 4yg8XY http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 x757e0 http://blog.numino.net/ ========================================================== fs3UTw http://blog.numino.net/ ACCESS可以用RND函数结合ASP中的RND函数来实现随机抽取。 zS4JCi http://blog.numino.net/ <% Q1xSb2 http://blog.numino.net/ ... 3SvVHc http://blog.numino.net/ Randomize X1rXEX http://blog.numino.net/ strSQL = "SELECT TOP 1 字段列表 FROM 表名 ORDER BY RND(-(编号字段)*" & RND() & ")" GD1vax http://blog.numino.net/ ... Z87ENF http://blog.numino.net/ %> r0xffr http://blog.numino.net/ =============================================== MV0E8F http://blog.numino.net/ 要产生指定范围的随机整数,请使用以下公式: EKPfIA http://blog.numino.net/ Int((upperbound - lowerbound + 1) * Rnd + lowerbound) rBY5x4 http://blog.numino.net/ 这里, upperbound 是此范围的上界,而 lowerbound 是此范围内的下界 yTLbkc http://blog.numino.net/ ========================================================== yB4mD3 http://blog.numino.net/ 随机提取10条记录的例子: Aa8q6b http://blog.numino.net/ Sql server: jPCVJw http://blog.numino.net/ select top 10 * from 表 order by newid() DZTBZg http://blog.numino.net/ Access: 051Ck6 http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) tg43WQ http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 VejLo9 http://blog.numino.net/ 比如用姓名字段(UserName) tZ9ke8 http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) 5wx5fx http://blog.numino.net/ MySql: 6UBZrC http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 wYdpd0 http://blog.numino.net/ anLm6Q http://blog.numino.net/ vqg851 http://blog.numino.net/ ======================================================== bgvEGJ http://blog.numino.net/ select top 4 * from DataTable order by rnd(-(id+rnd())) 7edu6L http://blog.numino.net/ vYdtyJ http://blog.numino.net/ ===================================================== xV9DnE http://blog.numino.net/ ASP&Access随机读取某段数据 Po7GC1 http://blog.numino.net/ 在网上也搜索了很多,分享下我的方法... sP7zPY http://blog.numino.net/ 以下是源代码: QN8169 http://blog.numino.net/ Randomize(Timer()) jJVmb2 http://blog.numino.net/ SQL = "SELECT TOP 100 ID FROM table1 ORDER BY Rnd(-(ID + " & Int((10000 * Rnd) + 1) & "))" LqwQ3Y http://blog.numino.net/ Set RS = Server.CreateObject("ADODB.RecordSet") THws79 http://blog.numino.net/ RS.Open SQL,Conn,1,1 iNLpt8 http://blog.numino.net/ If Not RS.EOF Then k65puk http://blog.numino.net/ RS.MoveFirst fWUn07 http://blog.numino.net/ For I = 1 To RS.RecordCount rQLic1 http://blog.numino.net/ Response.Write RS(0) & "<br>" G7GdPl http://blog.numino.net/ RS.MoveNext UXwtd4 http://blog.numino.net/ Next cWmc9w http://blog.numino.net/ End If rN9cwL http://blog.numino.net/ RS.Close U3W3Xa http://blog.numino.net/ Set RS = Nothing
|
|