| 如何随机取记录?(MSSQL、Access、MySql) |
1、数据量少的时候可以使用sql自带的newid()函数 LMX1q9 http://blog.numino.net/ select top 7 from table order by newid() 8KtTBk http://blog.numino.net/ select top 5 a.columName from (select distinct columName from tableName) a order by newid() Xkeyj0 http://blog.numino.net/ 2、数据量大则不适合用上述方法了,简单算法: 90jdyu http://blog.numino.net/ 统计表里所有的数据 N,然后返回一个小于N的随机数,再选择一条ID大于N就行了! t3sQqU http://blog.numino.net/ 随机提取10条记录的例子: 3MAjpr http://blog.numino.net/ Sql server: 2N3BGF http://blog.numino.net/ select top 10 * from 表 order by newid() 1p8uqL http://blog.numino.net/ Access: Pw7qKa http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) q7zN3p http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 t5TN79 http://blog.numino.net/ 比如用姓名字段(UserName) 45A006 http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) k92K5p http://blog.numino.net/ MySql: tO6SAN http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 x4Dpb9 http://blog.numino.net/ ========================================================== 63IRLI http://blog.numino.net/ ACCESS可以用RND函数结合ASP中的RND函数来实现随机抽取。 ZGwFLQ http://blog.numino.net/ <% lsVSSK http://blog.numino.net/ ... S7c83H http://blog.numino.net/ Randomize diGSu7 http://blog.numino.net/ strSQL = "SELECT TOP 1 字段列表 FROM 表名 ORDER BY RND(-(编号字段)*" & RND() & ")" 9W0W1p http://blog.numino.net/ ... oMpwf7 http://blog.numino.net/ %> aa1c20 http://blog.numino.net/ =============================================== 3mCFwY http://blog.numino.net/ 要产生指定范围的随机整数,请使用以下公式: 0vAcob http://blog.numino.net/ Int((upperbound - lowerbound + 1) * Rnd + lowerbound) gB0McN http://blog.numino.net/ 这里, upperbound 是此范围的上界,而 lowerbound 是此范围内的下界 v1TDZz http://blog.numino.net/ ========================================================== 6zv4Zp http://blog.numino.net/ 随机提取10条记录的例子: ns8b6N http://blog.numino.net/ Sql server: 1IyxAF http://blog.numino.net/ select top 10 * from 表 order by newid() 8P4WF2 http://blog.numino.net/ Access: WJBkFM http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) L2bwS9 http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 V6M6UV http://blog.numino.net/ 比如用姓名字段(UserName) sxQKE7 http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) PA1XPO http://blog.numino.net/ MySql: LTQS5W http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 PF93Og http://blog.numino.net/ gUXJZd http://blog.numino.net/ Fxlkid http://blog.numino.net/ ======================================================== 0EQOoq http://blog.numino.net/ select top 4 * from DataTable order by rnd(-(id+rnd())) il0Iux http://blog.numino.net/ gONcJ8 http://blog.numino.net/ ===================================================== 0wu4ip http://blog.numino.net/ ASP&Access随机读取某段数据 8K87BF http://blog.numino.net/ 在网上也搜索了很多,分享下我的方法... sCZvOw http://blog.numino.net/ 以下是源代码: NzGfh7 http://blog.numino.net/ Randomize(Timer()) iCY8ZI http://blog.numino.net/ SQL = "SELECT TOP 100 ID FROM table1 ORDER BY Rnd(-(ID + " & Int((10000 * Rnd) + 1) & "))" ZJAG18 http://blog.numino.net/ Set RS = Server.CreateObject("ADODB.RecordSet") qv9u81 http://blog.numino.net/ RS.Open SQL,Conn,1,1 C08r15 http://blog.numino.net/ If Not RS.EOF Then 4dubNU http://blog.numino.net/ RS.MoveFirst 202Sl9 http://blog.numino.net/ For I = 1 To RS.RecordCount 4Zv4UF http://blog.numino.net/ Response.Write RS(0) & "<br>" AyqEOw http://blog.numino.net/ RS.MoveNext M3FBv1 http://blog.numino.net/ Next AjTzZn http://blog.numino.net/ End If 0Q99Sb http://blog.numino.net/ RS.Close U8D9hR http://blog.numino.net/ Set RS = Nothing
|
|