如何随机取记录?(MSSQL、Access、MySql) |
1、数据量少的时候可以使用sql自带的newid()函数 8gB9Wz http://blog.numino.net/ select top 7 from table order by newid() 77OEPF http://blog.numino.net/ select top 5 a.columName from (select distinct columName from tableName) a order by newid() K7SKrv http://blog.numino.net/ 2、数据量大则不适合用上述方法了,简单算法: lTzMys http://blog.numino.net/ 统计表里所有的数据 N,然后返回一个小于N的随机数,再选择一条ID大于N就行了! 1A0u7f http://blog.numino.net/ 随机提取10条记录的例子: 0tjOf3 http://blog.numino.net/ Sql server: 4PeHR5 http://blog.numino.net/ select top 10 * from 表 order by newid() sFOvfZ http://blog.numino.net/ Access: S8eOKe http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) 9OFL6v http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 5h7X70 http://blog.numino.net/ 比如用姓名字段(UserName) vLNHnX http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) dBuzG3 http://blog.numino.net/ MySql: ni76cU http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 Kb8GIu http://blog.numino.net/ ========================================================== 7XK3Ql http://blog.numino.net/ ACCESS可以用RND函数结合ASP中的RND函数来实现随机抽取。 Te4PS4 http://blog.numino.net/ <% yY8Dzi http://blog.numino.net/ ... 60SIHB http://blog.numino.net/ Randomize YBam3t http://blog.numino.net/ strSQL = "SELECT TOP 1 字段列表 FROM 表名 ORDER BY RND(-(编号字段)*" & RND() & ")" 07Dded http://blog.numino.net/ ... Huc5w1 http://blog.numino.net/ %> VAiwgq http://blog.numino.net/ =============================================== MAcW4I http://blog.numino.net/ 要产生指定范围的随机整数,请使用以下公式: K51AfM http://blog.numino.net/ Int((upperbound - lowerbound + 1) * Rnd + lowerbound) nYmk9E http://blog.numino.net/ 这里, upperbound 是此范围的上界,而 lowerbound 是此范围内的下界 lyoAhh http://blog.numino.net/ ========================================================== L86PBD http://blog.numino.net/ 随机提取10条记录的例子: SWpq68 http://blog.numino.net/ Sql server: 8ffO4z http://blog.numino.net/ select top 10 * from 表 order by newid() s01IRB http://blog.numino.net/ Access: p0u1on http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) bTGJLC http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 ix2v5X http://blog.numino.net/ 比如用姓名字段(UserName) pb39sU http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) ysfg20 http://blog.numino.net/ MySql: q3g5yz http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 633lBs http://blog.numino.net/ FYGqdk http://blog.numino.net/ 01sKIK http://blog.numino.net/ ======================================================== 5o3BS3 http://blog.numino.net/ select top 4 * from DataTable order by rnd(-(id+rnd())) blW4K7 http://blog.numino.net/ 817eeJ http://blog.numino.net/ ===================================================== cHUkgy http://blog.numino.net/ ASP&Access随机读取某段数据 dlpsyx http://blog.numino.net/ 在网上也搜索了很多,分享下我的方法... 9AZmu2 http://blog.numino.net/ 以下是源代码: aD1825 http://blog.numino.net/ Randomize(Timer()) Q1j187 http://blog.numino.net/ SQL = "SELECT TOP 100 ID FROM table1 ORDER BY Rnd(-(ID + " & Int((10000 * Rnd) + 1) & "))" lFCWAm http://blog.numino.net/ Set RS = Server.CreateObject("ADODB.RecordSet") l56e0u http://blog.numino.net/ RS.Open SQL,Conn,1,1 6ls4uI http://blog.numino.net/ If Not RS.EOF Then 88eEHu http://blog.numino.net/ RS.MoveFirst 6472s6 http://blog.numino.net/ For I = 1 To RS.RecordCount EJ8yg9 http://blog.numino.net/ Response.Write RS(0) & "<br>" 2fjsxW http://blog.numino.net/ RS.MoveNext qUw51c http://blog.numino.net/ Next 3DJGRp http://blog.numino.net/ End If oRDsb1 http://blog.numino.net/ RS.Close c09Vu9 http://blog.numino.net/ Set RS = Nothing
|
|