如何随机取记录?(MSSQL、Access、MySql) |
1、数据量少的时候可以使用sql自带的newid()函数 Ta6J7o http://blog.numino.net/ select top 7 from table order by newid() 0iR5aJ http://blog.numino.net/ select top 5 a.columName from (select distinct columName from tableName) a order by newid() c3D4qR http://blog.numino.net/ 2、数据量大则不适合用上述方法了,简单算法: 7JQ2Ju http://blog.numino.net/ 统计表里所有的数据 N,然后返回一个小于N的随机数,再选择一条ID大于N就行了! uk68G6 http://blog.numino.net/ 随机提取10条记录的例子: iS7gvS http://blog.numino.net/ Sql server: f6wre8 http://blog.numino.net/ select top 10 * from 表 order by newid() gnHC7o http://blog.numino.net/ Access: 3nK4PJ http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) 92786P http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 8pdOfI http://blog.numino.net/ 比如用姓名字段(UserName) 2kOcu3 http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) XlKjzS http://blog.numino.net/ MySql: YPHc7J http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 d0DI09 http://blog.numino.net/ ========================================================== kkKzfP http://blog.numino.net/ ACCESS可以用RND函数结合ASP中的RND函数来实现随机抽取。 2Y8kWx http://blog.numino.net/ <% v52gzt http://blog.numino.net/ ... fV0OSZ http://blog.numino.net/ Randomize C3DTZ0 http://blog.numino.net/ strSQL = "SELECT TOP 1 字段列表 FROM 表名 ORDER BY RND(-(编号字段)*" & RND() & ")" oWX846 http://blog.numino.net/ ... w8EL2Y http://blog.numino.net/ %> 2Embs1 http://blog.numino.net/ =============================================== xQ5CJJ http://blog.numino.net/ 要产生指定范围的随机整数,请使用以下公式: 0V379i http://blog.numino.net/ Int((upperbound - lowerbound + 1) * Rnd + lowerbound) 93KwTV http://blog.numino.net/ 这里, upperbound 是此范围的上界,而 lowerbound 是此范围内的下界 Lu00y6 http://blog.numino.net/ ========================================================== HRk9O9 http://blog.numino.net/ 随机提取10条记录的例子: alm5GB http://blog.numino.net/ Sql server: 69qZdA http://blog.numino.net/ select top 10 * from 表 order by newid() XU6Wtp http://blog.numino.net/ Access: rXX7Vq http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) nh5sXP http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 jNnPqo http://blog.numino.net/ 比如用姓名字段(UserName) Ux3s2l http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) GcQYb4 http://blog.numino.net/ MySql: Z6Kf51 http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 BGl1KR http://blog.numino.net/ CMM05i http://blog.numino.net/ CwumCr http://blog.numino.net/ ======================================================== 23662F http://blog.numino.net/ select top 4 * from DataTable order by rnd(-(id+rnd())) ZC9BS3 http://blog.numino.net/ PjpTTE http://blog.numino.net/ ===================================================== I2pwag http://blog.numino.net/ ASP&Access随机读取某段数据 285AUZ http://blog.numino.net/ 在网上也搜索了很多,分享下我的方法... nJNmnT http://blog.numino.net/ 以下是源代码: Ri242P http://blog.numino.net/ Randomize(Timer()) hI639a http://blog.numino.net/ SQL = "SELECT TOP 100 ID FROM table1 ORDER BY Rnd(-(ID + " & Int((10000 * Rnd) + 1) & "))" tNOi77 http://blog.numino.net/ Set RS = Server.CreateObject("ADODB.RecordSet") zPqOEn http://blog.numino.net/ RS.Open SQL,Conn,1,1 2F2C41 http://blog.numino.net/ If Not RS.EOF Then 4Tgl06 http://blog.numino.net/ RS.MoveFirst gXqFO0 http://blog.numino.net/ For I = 1 To RS.RecordCount dcN8mR http://blog.numino.net/ Response.Write RS(0) & "<br>" Or8daW http://blog.numino.net/ RS.MoveNext bM6rd6 http://blog.numino.net/ Next sU3LRd http://blog.numino.net/ End If 71i7DC http://blog.numino.net/ RS.Close QFtvcJ http://blog.numino.net/ Set RS = Nothing
|
|