| 如何随机取记录?(MSSQL、Access、MySql) |
1、数据量少的时候可以使用sql自带的newid()函数 W75YfW http://blog.numino.net/ select top 7 from table order by newid() gtMxGO http://blog.numino.net/ select top 5 a.columName from (select distinct columName from tableName) a order by newid() EpkgSN http://blog.numino.net/ 2、数据量大则不适合用上述方法了,简单算法: PGeTzN http://blog.numino.net/ 统计表里所有的数据 N,然后返回一个小于N的随机数,再选择一条ID大于N就行了! yHdx44 http://blog.numino.net/ 随机提取10条记录的例子: 1n4ljw http://blog.numino.net/ Sql server: 99x0r5 http://blog.numino.net/ select top 10 * from 表 order by newid() 70Km32 http://blog.numino.net/ Access: f6YIo0 http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) FeCW35 http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 A8Lu7l http://blog.numino.net/ 比如用姓名字段(UserName) fW4bxb http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) BrdkfI http://blog.numino.net/ MySql: 3GNEU6 http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 0nCLK9 http://blog.numino.net/ ========================================================== xmKRNj http://blog.numino.net/ ACCESS可以用RND函数结合ASP中的RND函数来实现随机抽取。 L6Gycp http://blog.numino.net/ <% XsUeB5 http://blog.numino.net/ ... pGCELU http://blog.numino.net/ Randomize 95M1k6 http://blog.numino.net/ strSQL = "SELECT TOP 1 字段列表 FROM 表名 ORDER BY RND(-(编号字段)*" & RND() & ")" cFVrj0 http://blog.numino.net/ ... 8dRGYd http://blog.numino.net/ %> o1otqI http://blog.numino.net/ =============================================== oDIFzi http://blog.numino.net/ 要产生指定范围的随机整数,请使用以下公式: 33X80F http://blog.numino.net/ Int((upperbound - lowerbound + 1) * Rnd + lowerbound) VXA00C http://blog.numino.net/ 这里, upperbound 是此范围的上界,而 lowerbound 是此范围内的下界 d9zKe2 http://blog.numino.net/ ========================================================== 0srno9 http://blog.numino.net/ 随机提取10条记录的例子: pay1T2 http://blog.numino.net/ Sql server: W4C73Z http://blog.numino.net/ select top 10 * from 表 order by newid() F6HBRP http://blog.numino.net/ Access: LDpTsB http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) m6p4iO http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 2n1Og6 http://blog.numino.net/ 比如用姓名字段(UserName) wVXKjJ http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) NOe10M http://blog.numino.net/ MySql: 24MXbV http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 JX7f2L http://blog.numino.net/ FsvC3u http://blog.numino.net/ LRkWAY http://blog.numino.net/ ======================================================== 1R0u7n http://blog.numino.net/ select top 4 * from DataTable order by rnd(-(id+rnd())) uWhp6f http://blog.numino.net/ V0YjE7 http://blog.numino.net/ ===================================================== ZdMsqC http://blog.numino.net/ ASP&Access随机读取某段数据 k37Vfn http://blog.numino.net/ 在网上也搜索了很多,分享下我的方法... E0U7ZA http://blog.numino.net/ 以下是源代码: 2KCruk http://blog.numino.net/ Randomize(Timer()) 5j8M55 http://blog.numino.net/ SQL = "SELECT TOP 100 ID FROM table1 ORDER BY Rnd(-(ID + " & Int((10000 * Rnd) + 1) & "))" 3qtrCz http://blog.numino.net/ Set RS = Server.CreateObject("ADODB.RecordSet") WWjasT http://blog.numino.net/ RS.Open SQL,Conn,1,1 tRH7hX http://blog.numino.net/ If Not RS.EOF Then eJ4Oke http://blog.numino.net/ RS.MoveFirst FGUCac http://blog.numino.net/ For I = 1 To RS.RecordCount 0Mfcwg http://blog.numino.net/ Response.Write RS(0) & "<br>" u4AWt9 http://blog.numino.net/ RS.MoveNext PVidXS http://blog.numino.net/ Next aiEhxD http://blog.numino.net/ End If cAiyj2 http://blog.numino.net/ RS.Close MwRADf http://blog.numino.net/ Set RS = Nothing
|
|