如何随机取记录?(MSSQL、Access、MySql) |
1、数据量少的时候可以使用sql自带的newid()函数 1RVc5B http://blog.numino.net/ select top 7 from table order by newid() o1TQ70 http://blog.numino.net/ select top 5 a.columName from (select distinct columName from tableName) a order by newid() DzAoF6 http://blog.numino.net/ 2、数据量大则不适合用上述方法了,简单算法: IdxfFN http://blog.numino.net/ 统计表里所有的数据 N,然后返回一个小于N的随机数,再选择一条ID大于N就行了! HiIS31 http://blog.numino.net/ 随机提取10条记录的例子: 9v0d03 http://blog.numino.net/ Sql server: aYLY1x http://blog.numino.net/ select top 10 * from 表 order by newid() jH8xrX http://blog.numino.net/ Access: zqEIYK http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) lVCixB http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 53V19m http://blog.numino.net/ 比如用姓名字段(UserName) 7TZqq3 http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) H02WoS http://blog.numino.net/ MySql: 7e4N13 http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 xCiVlz http://blog.numino.net/ ========================================================== WFQFrK http://blog.numino.net/ ACCESS可以用RND函数结合ASP中的RND函数来实现随机抽取。 s54CTx http://blog.numino.net/ <% hd220b http://blog.numino.net/ ... 8MgIT7 http://blog.numino.net/ Randomize 1mqQSr http://blog.numino.net/ strSQL = "SELECT TOP 1 字段列表 FROM 表名 ORDER BY RND(-(编号字段)*" & RND() & ")" 5wsmis http://blog.numino.net/ ... DFtoR8 http://blog.numino.net/ %> mHmCbw http://blog.numino.net/ =============================================== qNzxGz http://blog.numino.net/ 要产生指定范围的随机整数,请使用以下公式: hd9XF5 http://blog.numino.net/ Int((upperbound - lowerbound + 1) * Rnd + lowerbound) EeeZXj http://blog.numino.net/ 这里, upperbound 是此范围的上界,而 lowerbound 是此范围内的下界 8BYp9s http://blog.numino.net/ ========================================================== 6Eq0NP http://blog.numino.net/ 随机提取10条记录的例子: 64CoAO http://blog.numino.net/ Sql server: mg8DSb http://blog.numino.net/ select top 10 * from 表 order by newid() 8G3VNZ http://blog.numino.net/ Access: RjwkGy http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) 8916S5 http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 5iSCZR http://blog.numino.net/ 比如用姓名字段(UserName) dbaBtz http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) VaoHv8 http://blog.numino.net/ MySql: 26hl8z http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 Yk8PqD http://blog.numino.net/ qgtLnZ http://blog.numino.net/ WfMALx http://blog.numino.net/ ======================================================== PkYnlE http://blog.numino.net/ select top 4 * from DataTable order by rnd(-(id+rnd())) WN52sP http://blog.numino.net/ j22D6T http://blog.numino.net/ ===================================================== U17sZo http://blog.numino.net/ ASP&Access随机读取某段数据 Cl7605 http://blog.numino.net/ 在网上也搜索了很多,分享下我的方法... e1QY41 http://blog.numino.net/ 以下是源代码: vfp2WB http://blog.numino.net/ Randomize(Timer()) HVKe7u http://blog.numino.net/ SQL = "SELECT TOP 100 ID FROM table1 ORDER BY Rnd(-(ID + " & Int((10000 * Rnd) + 1) & "))" TBN7D1 http://blog.numino.net/ Set RS = Server.CreateObject("ADODB.RecordSet") Ltb9Nt http://blog.numino.net/ RS.Open SQL,Conn,1,1 21HcVt http://blog.numino.net/ If Not RS.EOF Then Zh9jce http://blog.numino.net/ RS.MoveFirst UV7AL1 http://blog.numino.net/ For I = 1 To RS.RecordCount QJTf19 http://blog.numino.net/ Response.Write RS(0) & "<br>" u99GPr http://blog.numino.net/ RS.MoveNext HDK2FB http://blog.numino.net/ Next 4s2cTD http://blog.numino.net/ End If XNdnXc http://blog.numino.net/ RS.Close 0hOifU http://blog.numino.net/ Set RS = Nothing
|
|