如何随机取记录?(MSSQL、Access、MySql) |
1、数据量少的时候可以使用sql自带的newid()函数 y91s0F http://blog.numino.net/ select top 7 from table order by newid() OnKWAt http://blog.numino.net/ select top 5 a.columName from (select distinct columName from tableName) a order by newid() XbC3U1 http://blog.numino.net/ 2、数据量大则不适合用上述方法了,简单算法: NV1M0q http://blog.numino.net/ 统计表里所有的数据 N,然后返回一个小于N的随机数,再选择一条ID大于N就行了! LbhQi5 http://blog.numino.net/ 随机提取10条记录的例子: 58OsEe http://blog.numino.net/ Sql server: xZSbLL http://blog.numino.net/ select top 10 * from 表 order by newid() 6L5YtH http://blog.numino.net/ Access: Jy2W8u http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) Bxx0tN http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 aYaifg http://blog.numino.net/ 比如用姓名字段(UserName) 9D8sSd http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) i0NGJ4 http://blog.numino.net/ MySql: MJ5wpD http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 V7pz78 http://blog.numino.net/ ========================================================== Dxr96A http://blog.numino.net/ ACCESS可以用RND函数结合ASP中的RND函数来实现随机抽取。 ngKCZ0 http://blog.numino.net/ <% rU5gxo http://blog.numino.net/ ... 8C0jCv http://blog.numino.net/ Randomize 5x04ry http://blog.numino.net/ strSQL = "SELECT TOP 1 字段列表 FROM 表名 ORDER BY RND(-(编号字段)*" & RND() & ")" iBjeD4 http://blog.numino.net/ ... at081I http://blog.numino.net/ %> WuQEyU http://blog.numino.net/ =============================================== Pk6JBR http://blog.numino.net/ 要产生指定范围的随机整数,请使用以下公式: VV54RG http://blog.numino.net/ Int((upperbound - lowerbound + 1) * Rnd + lowerbound) xYYCM0 http://blog.numino.net/ 这里, upperbound 是此范围的上界,而 lowerbound 是此范围内的下界 qz9mAv http://blog.numino.net/ ========================================================== LboqG5 http://blog.numino.net/ 随机提取10条记录的例子: ECq5iv http://blog.numino.net/ Sql server: 8gFykd http://blog.numino.net/ select top 10 * from 表 order by newid() V7T0gK http://blog.numino.net/ Access: e3j9e7 http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) k8GT0v http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 4vA8p6 http://blog.numino.net/ 比如用姓名字段(UserName) xqxA47 http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) 3COAL6 http://blog.numino.net/ MySql: 99V4oj http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 T8X89l http://blog.numino.net/ hfALj9 http://blog.numino.net/ 5IK5Du http://blog.numino.net/ ======================================================== Xp48Ia http://blog.numino.net/ select top 4 * from DataTable order by rnd(-(id+rnd())) 9vxx22 http://blog.numino.net/ vr0lXi http://blog.numino.net/ ===================================================== vK7W44 http://blog.numino.net/ ASP&Access随机读取某段数据 VF5yKH http://blog.numino.net/ 在网上也搜索了很多,分享下我的方法... 7TM00e http://blog.numino.net/ 以下是源代码: udAoN5 http://blog.numino.net/ Randomize(Timer()) REmRF0 http://blog.numino.net/ SQL = "SELECT TOP 100 ID FROM table1 ORDER BY Rnd(-(ID + " & Int((10000 * Rnd) + 1) & "))" Kx3i22 http://blog.numino.net/ Set RS = Server.CreateObject("ADODB.RecordSet") brb8SG http://blog.numino.net/ RS.Open SQL,Conn,1,1 mJY23h http://blog.numino.net/ If Not RS.EOF Then x549Lc http://blog.numino.net/ RS.MoveFirst 07pDaq http://blog.numino.net/ For I = 1 To RS.RecordCount yJtR7f http://blog.numino.net/ Response.Write RS(0) & "<br>" KePC0h http://blog.numino.net/ RS.MoveNext 0gc3fI http://blog.numino.net/ Next twtyXw http://blog.numino.net/ End If kpLCI8 http://blog.numino.net/ RS.Close RjVb0c http://blog.numino.net/ Set RS = Nothing
|
|