如何随机取记录?(MSSQL、Access、MySql) |
1、数据量少的时候可以使用sql自带的newid()函数 tb9Y8g http://blog.numino.net/ select top 7 from table order by newid() uDu6UC http://blog.numino.net/ select top 5 a.columName from (select distinct columName from tableName) a order by newid() jn4A4f http://blog.numino.net/ 2、数据量大则不适合用上述方法了,简单算法: TkRG5U http://blog.numino.net/ 统计表里所有的数据 N,然后返回一个小于N的随机数,再选择一条ID大于N就行了! CVOGZe http://blog.numino.net/ 随机提取10条记录的例子: 09SWYt http://blog.numino.net/ Sql server: Hp03x1 http://blog.numino.net/ select top 10 * from 表 order by newid() Veen0U http://blog.numino.net/ Access: G6i461 http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) 8DBIhJ http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 zN7Eb2 http://blog.numino.net/ 比如用姓名字段(UserName) AbHtni http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) mL5eFL http://blog.numino.net/ MySql: 8gh38Y http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 xfF23a http://blog.numino.net/ ========================================================== C5L86D http://blog.numino.net/ ACCESS可以用RND函数结合ASP中的RND函数来实现随机抽取。 vk5CqX http://blog.numino.net/ <% teu621 http://blog.numino.net/ ... R4LS4g http://blog.numino.net/ Randomize T75R8c http://blog.numino.net/ strSQL = "SELECT TOP 1 字段列表 FROM 表名 ORDER BY RND(-(编号字段)*" & RND() & ")" TQW1Mi http://blog.numino.net/ ... iQS0u8 http://blog.numino.net/ %> G1oQVk http://blog.numino.net/ =============================================== 0175Yx http://blog.numino.net/ 要产生指定范围的随机整数,请使用以下公式: 1BbGGp http://blog.numino.net/ Int((upperbound - lowerbound + 1) * Rnd + lowerbound) oTtfJm http://blog.numino.net/ 这里, upperbound 是此范围的上界,而 lowerbound 是此范围内的下界 wrD42H http://blog.numino.net/ ========================================================== 4Vd4b8 http://blog.numino.net/ 随机提取10条记录的例子: dwOOFE http://blog.numino.net/ Sql server: JF6Bl9 http://blog.numino.net/ select top 10 * from 表 order by newid() 62bL7D http://blog.numino.net/ Access: 3Tp4qm http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) t86dF7 http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 YwDh7V http://blog.numino.net/ 比如用姓名字段(UserName) 1BIr02 http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) MNzp57 http://blog.numino.net/ MySql: iimn8V http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 vb9WJa http://blog.numino.net/ t2oHkf http://blog.numino.net/ 3V4K8B http://blog.numino.net/ ======================================================== JZoThn http://blog.numino.net/ select top 4 * from DataTable order by rnd(-(id+rnd())) 6Qs6qN http://blog.numino.net/ v7tHKS http://blog.numino.net/ ===================================================== LO87jU http://blog.numino.net/ ASP&Access随机读取某段数据 TwCyTJ http://blog.numino.net/ 在网上也搜索了很多,分享下我的方法... DhU2Oz http://blog.numino.net/ 以下是源代码: a7UnNh http://blog.numino.net/ Randomize(Timer()) 3l39Cs http://blog.numino.net/ SQL = "SELECT TOP 100 ID FROM table1 ORDER BY Rnd(-(ID + " & Int((10000 * Rnd) + 1) & "))" G3h3KP http://blog.numino.net/ Set RS = Server.CreateObject("ADODB.RecordSet") aSzs9G http://blog.numino.net/ RS.Open SQL,Conn,1,1 1W3l4W http://blog.numino.net/ If Not RS.EOF Then Kdyz2E http://blog.numino.net/ RS.MoveFirst 1kMTjW http://blog.numino.net/ For I = 1 To RS.RecordCount 8rCHpq http://blog.numino.net/ Response.Write RS(0) & "<br>" lG9xji http://blog.numino.net/ RS.MoveNext iARE4Q http://blog.numino.net/ Next 23u56X http://blog.numino.net/ End If SL4B2d http://blog.numino.net/ RS.Close F9YdUY http://blog.numino.net/ Set RS = Nothing
|
|