| 如何随机取记录?(MSSQL、Access、MySql) |
1、数据量少的时候可以使用sql自带的newid()函数 UTxrxX http://blog.numino.net/ select top 7 from table order by newid() iK0jT5 http://blog.numino.net/ select top 5 a.columName from (select distinct columName from tableName) a order by newid() li4a99 http://blog.numino.net/ 2、数据量大则不适合用上述方法了,简单算法: W5g0OI http://blog.numino.net/ 统计表里所有的数据 N,然后返回一个小于N的随机数,再选择一条ID大于N就行了! 7o34xv http://blog.numino.net/ 随机提取10条记录的例子: 4AIgmy http://blog.numino.net/ Sql server: RQ7AKg http://blog.numino.net/ select top 10 * from 表 order by newid() Pt3Nlj http://blog.numino.net/ Access: pS0TA3 http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) kBit7Y http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 6Dy58n http://blog.numino.net/ 比如用姓名字段(UserName) 0nu0I4 http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) LwYAVW http://blog.numino.net/ MySql: Ow0zDl http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 kZQ6AF http://blog.numino.net/ ========================================================== uaITK1 http://blog.numino.net/ ACCESS可以用RND函数结合ASP中的RND函数来实现随机抽取。 ae9kYo http://blog.numino.net/ <% Zf1m0j http://blog.numino.net/ ... A8JZJ0 http://blog.numino.net/ Randomize 6DLxN6 http://blog.numino.net/ strSQL = "SELECT TOP 1 字段列表 FROM 表名 ORDER BY RND(-(编号字段)*" & RND() & ")" 1VOeUS http://blog.numino.net/ ... zYIyFV http://blog.numino.net/ %> B312fI http://blog.numino.net/ =============================================== X96Ky6 http://blog.numino.net/ 要产生指定范围的随机整数,请使用以下公式: bg2zHa http://blog.numino.net/ Int((upperbound - lowerbound + 1) * Rnd + lowerbound) bah6a8 http://blog.numino.net/ 这里, upperbound 是此范围的上界,而 lowerbound 是此范围内的下界 595dX8 http://blog.numino.net/ ========================================================== Ro9rev http://blog.numino.net/ 随机提取10条记录的例子: UyR4TN http://blog.numino.net/ Sql server: J1948F http://blog.numino.net/ select top 10 * from 表 order by newid() yt71Vn http://blog.numino.net/ Access: D8wjqU http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) xZ8og1 http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 UI97ox http://blog.numino.net/ 比如用姓名字段(UserName) 89AA5W http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) EpwBR0 http://blog.numino.net/ MySql: zkVI6D http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 UJf4FG http://blog.numino.net/ M2juky http://blog.numino.net/ H2TIwJ http://blog.numino.net/ ======================================================== gbpn6n http://blog.numino.net/ select top 4 * from DataTable order by rnd(-(id+rnd())) P23CZ7 http://blog.numino.net/ K9uPwJ http://blog.numino.net/ ===================================================== ET7kdf http://blog.numino.net/ ASP&Access随机读取某段数据 bQ8OdY http://blog.numino.net/ 在网上也搜索了很多,分享下我的方法... i1mNkG http://blog.numino.net/ 以下是源代码: O3BHFp http://blog.numino.net/ Randomize(Timer()) 8Gu419 http://blog.numino.net/ SQL = "SELECT TOP 100 ID FROM table1 ORDER BY Rnd(-(ID + " & Int((10000 * Rnd) + 1) & "))" f7Fw1D http://blog.numino.net/ Set RS = Server.CreateObject("ADODB.RecordSet") 3MUUB5 http://blog.numino.net/ RS.Open SQL,Conn,1,1 gFBztD http://blog.numino.net/ If Not RS.EOF Then eXFL1w http://blog.numino.net/ RS.MoveFirst vB9oy1 http://blog.numino.net/ For I = 1 To RS.RecordCount 11z273 http://blog.numino.net/ Response.Write RS(0) & "<br>" THkvR8 http://blog.numino.net/ RS.MoveNext GZgQf1 http://blog.numino.net/ Next cVEx84 http://blog.numino.net/ End If bU1N9S http://blog.numino.net/ RS.Close HXBfdk http://blog.numino.net/ Set RS = Nothing
|
|