如何随机取记录?(MSSQL、Access、MySql) |
1、数据量少的时候可以使用sql自带的newid()函数 68P9Ft http://blog.numino.net/ select top 7 from table order by newid() 39WgCk http://blog.numino.net/ select top 5 a.columName from (select distinct columName from tableName) a order by newid() 0TNctl http://blog.numino.net/ 2、数据量大则不适合用上述方法了,简单算法: QoaEm9 http://blog.numino.net/ 统计表里所有的数据 N,然后返回一个小于N的随机数,再选择一条ID大于N就行了! ASxrSm http://blog.numino.net/ 随机提取10条记录的例子: i0je31 http://blog.numino.net/ Sql server: j6q7ki http://blog.numino.net/ select top 10 * from 表 order by newid() 0VzO89 http://blog.numino.net/ Access: CUP7S0 http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) 0gK8rc http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 875t3P http://blog.numino.net/ 比如用姓名字段(UserName) SAoO09 http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) 9HzIuo http://blog.numino.net/ MySql: wK5Kif http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 chLq0r http://blog.numino.net/ ========================================================== ovUTFA http://blog.numino.net/ ACCESS可以用RND函数结合ASP中的RND函数来实现随机抽取。 9Cw7sc http://blog.numino.net/ <% 5C2agj http://blog.numino.net/ ... JEgmj5 http://blog.numino.net/ Randomize Gbca9D http://blog.numino.net/ strSQL = "SELECT TOP 1 字段列表 FROM 表名 ORDER BY RND(-(编号字段)*" & RND() & ")" SUSQPn http://blog.numino.net/ ... VLOV0j http://blog.numino.net/ %> FWKDiV http://blog.numino.net/ =============================================== 9NQ2ex http://blog.numino.net/ 要产生指定范围的随机整数,请使用以下公式: S8gHGk http://blog.numino.net/ Int((upperbound - lowerbound + 1) * Rnd + lowerbound) WSJQVL http://blog.numino.net/ 这里, upperbound 是此范围的上界,而 lowerbound 是此范围内的下界 yDLJY0 http://blog.numino.net/ ========================================================== 841C2j http://blog.numino.net/ 随机提取10条记录的例子: X585e9 http://blog.numino.net/ Sql server: r190gb http://blog.numino.net/ select top 10 * from 表 order by newid() 3m73Jv http://blog.numino.net/ Access: KRLlWr http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) 78qO5W http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 w4gZpG http://blog.numino.net/ 比如用姓名字段(UserName) 9w1y6Y http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) OdTpxN http://blog.numino.net/ MySql: c9bvwE http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 vCgUo5 http://blog.numino.net/ dpcAzA http://blog.numino.net/ v9TThE http://blog.numino.net/ ======================================================== 2M93NZ http://blog.numino.net/ select top 4 * from DataTable order by rnd(-(id+rnd())) v0z5Ag http://blog.numino.net/ 5Pdw4W http://blog.numino.net/ ===================================================== 86nFJ4 http://blog.numino.net/ ASP&Access随机读取某段数据 NHn0Uv http://blog.numino.net/ 在网上也搜索了很多,分享下我的方法... 1Ks6i6 http://blog.numino.net/ 以下是源代码: NkolYP http://blog.numino.net/ Randomize(Timer()) KZ9fr8 http://blog.numino.net/ SQL = "SELECT TOP 100 ID FROM table1 ORDER BY Rnd(-(ID + " & Int((10000 * Rnd) + 1) & "))" d864Bj http://blog.numino.net/ Set RS = Server.CreateObject("ADODB.RecordSet") UalZPR http://blog.numino.net/ RS.Open SQL,Conn,1,1 9L08Z0 http://blog.numino.net/ If Not RS.EOF Then 7kq32V http://blog.numino.net/ RS.MoveFirst D0xY85 http://blog.numino.net/ For I = 1 To RS.RecordCount Y7vXOc http://blog.numino.net/ Response.Write RS(0) & "<br>" u38oib http://blog.numino.net/ RS.MoveNext jYYQHC http://blog.numino.net/ Next 2MSYf4 http://blog.numino.net/ End If PDp5N2 http://blog.numino.net/ RS.Close deNv56 http://blog.numino.net/ Set RS = Nothing
|
|