如何随机取记录?(MSSQL、Access、MySql) |
1、数据量少的时候可以使用sql自带的newid()函数 yR4ObM http://blog.numino.net/ select top 7 from table order by newid() qAOLcr http://blog.numino.net/ select top 5 a.columName from (select distinct columName from tableName) a order by newid() mDYJAh http://blog.numino.net/ 2、数据量大则不适合用上述方法了,简单算法: K7E3PF http://blog.numino.net/ 统计表里所有的数据 N,然后返回一个小于N的随机数,再选择一条ID大于N就行了! 4sKkAN http://blog.numino.net/ 随机提取10条记录的例子: VRLLk4 http://blog.numino.net/ Sql server: 2B3oOn http://blog.numino.net/ select top 10 * from 表 order by newid() M6Q157 http://blog.numino.net/ Access: u6Sq6y http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) bNmPTQ http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 50GWcK http://blog.numino.net/ 比如用姓名字段(UserName) 6x7Zr0 http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) n9CDzd http://blog.numino.net/ MySql: NmfYuZ http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 2v2aqK http://blog.numino.net/ ========================================================== DZSY2z http://blog.numino.net/ ACCESS可以用RND函数结合ASP中的RND函数来实现随机抽取。 6DeqAh http://blog.numino.net/ <% 1uLzDy http://blog.numino.net/ ... yEIu5u http://blog.numino.net/ Randomize 694SGu http://blog.numino.net/ strSQL = "SELECT TOP 1 字段列表 FROM 表名 ORDER BY RND(-(编号字段)*" & RND() & ")" EtVnN2 http://blog.numino.net/ ... 6g5v81 http://blog.numino.net/ %> r99ej5 http://blog.numino.net/ =============================================== IAzESx http://blog.numino.net/ 要产生指定范围的随机整数,请使用以下公式: 8BhEzt http://blog.numino.net/ Int((upperbound - lowerbound + 1) * Rnd + lowerbound) sxaQ5S http://blog.numino.net/ 这里, upperbound 是此范围的上界,而 lowerbound 是此范围内的下界 DC26og http://blog.numino.net/ ========================================================== 6jrISj http://blog.numino.net/ 随机提取10条记录的例子: 1KWL9C http://blog.numino.net/ Sql server: 8tvDiK http://blog.numino.net/ select top 10 * from 表 order by newid() COLaHa http://blog.numino.net/ Access: 8DjxQf http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) jzGRLy http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 bC75KQ http://blog.numino.net/ 比如用姓名字段(UserName) 70Mq7K http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) HPo9v3 http://blog.numino.net/ MySql: mI7NQU http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 xnXRWh http://blog.numino.net/ ZJov3Z http://blog.numino.net/ 427G5S http://blog.numino.net/ ======================================================== R80xh6 http://blog.numino.net/ select top 4 * from DataTable order by rnd(-(id+rnd())) sHjxcc http://blog.numino.net/ yPBp6z http://blog.numino.net/ ===================================================== 8Q5qzM http://blog.numino.net/ ASP&Access随机读取某段数据 eYeDSt http://blog.numino.net/ 在网上也搜索了很多,分享下我的方法... mNX38Z http://blog.numino.net/ 以下是源代码: piYoG3 http://blog.numino.net/ Randomize(Timer()) EYq0SP http://blog.numino.net/ SQL = "SELECT TOP 100 ID FROM table1 ORDER BY Rnd(-(ID + " & Int((10000 * Rnd) + 1) & "))" a97DEV http://blog.numino.net/ Set RS = Server.CreateObject("ADODB.RecordSet") 22ckhu http://blog.numino.net/ RS.Open SQL,Conn,1,1 3hO71J http://blog.numino.net/ If Not RS.EOF Then 6SE2r1 http://blog.numino.net/ RS.MoveFirst MPQuiq http://blog.numino.net/ For I = 1 To RS.RecordCount lk5HVI http://blog.numino.net/ Response.Write RS(0) & "<br>" JT3e3K http://blog.numino.net/ RS.MoveNext 9yMToo http://blog.numino.net/ Next i28Hn1 http://blog.numino.net/ End If 311Sc2 http://blog.numino.net/ RS.Close kTV286 http://blog.numino.net/ Set RS = Nothing
|
|