| 如何随机取记录?(MSSQL、Access、MySql) |
1、数据量少的时候可以使用sql自带的newid()函数 z2b9Th http://blog.numino.net/ select top 7 from table order by newid() iLy357 http://blog.numino.net/ select top 5 a.columName from (select distinct columName from tableName) a order by newid() iXIdIw http://blog.numino.net/ 2、数据量大则不适合用上述方法了,简单算法: z2Ynqu http://blog.numino.net/ 统计表里所有的数据 N,然后返回一个小于N的随机数,再选择一条ID大于N就行了! y7xAaU http://blog.numino.net/ 随机提取10条记录的例子: hldT3p http://blog.numino.net/ Sql server: 5BOXdf http://blog.numino.net/ select top 10 * from 表 order by newid() AC1uGU http://blog.numino.net/ Access: 48HH0m http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) 06t89V http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 ce2LwA http://blog.numino.net/ 比如用姓名字段(UserName) mb5vLi http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) ylAD8c http://blog.numino.net/ MySql: W5iW41 http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 sf8V4e http://blog.numino.net/ ========================================================== 2w479g http://blog.numino.net/ ACCESS可以用RND函数结合ASP中的RND函数来实现随机抽取。 6CtBSe http://blog.numino.net/ <% 4eOjt0 http://blog.numino.net/ ... WwqbF0 http://blog.numino.net/ Randomize JO8q9k http://blog.numino.net/ strSQL = "SELECT TOP 1 字段列表 FROM 表名 ORDER BY RND(-(编号字段)*" & RND() & ")" ljV1kV http://blog.numino.net/ ... QF8Tkw http://blog.numino.net/ %> Fkq61t http://blog.numino.net/ =============================================== Y1i2R1 http://blog.numino.net/ 要产生指定范围的随机整数,请使用以下公式: 55O2q1 http://blog.numino.net/ Int((upperbound - lowerbound + 1) * Rnd + lowerbound) w9CmrF http://blog.numino.net/ 这里, upperbound 是此范围的上界,而 lowerbound 是此范围内的下界 hZDu3N http://blog.numino.net/ ========================================================== BZ7Knf http://blog.numino.net/ 随机提取10条记录的例子: bBLoV0 http://blog.numino.net/ Sql server: xIA8kf http://blog.numino.net/ select top 10 * from 表 order by newid() 8YDFjz http://blog.numino.net/ Access: RQ6HmG http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) f13J9V http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 362poO http://blog.numino.net/ 比如用姓名字段(UserName) MYoz4N http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) T2DPpn http://blog.numino.net/ MySql: imPgfn http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 TXB14g http://blog.numino.net/ zsJQt0 http://blog.numino.net/ q22P0F http://blog.numino.net/ ======================================================== e1KEwJ http://blog.numino.net/ select top 4 * from DataTable order by rnd(-(id+rnd())) 12p02R http://blog.numino.net/ auH5Uv http://blog.numino.net/ ===================================================== VSlRH7 http://blog.numino.net/ ASP&Access随机读取某段数据 K3696R http://blog.numino.net/ 在网上也搜索了很多,分享下我的方法... 51aHS9 http://blog.numino.net/ 以下是源代码: qhe546 http://blog.numino.net/ Randomize(Timer()) gbAG2h http://blog.numino.net/ SQL = "SELECT TOP 100 ID FROM table1 ORDER BY Rnd(-(ID + " & Int((10000 * Rnd) + 1) & "))" WkSUS3 http://blog.numino.net/ Set RS = Server.CreateObject("ADODB.RecordSet") u1NXWE http://blog.numino.net/ RS.Open SQL,Conn,1,1 67Q9fe http://blog.numino.net/ If Not RS.EOF Then 5P7bUH http://blog.numino.net/ RS.MoveFirst 70YhYJ http://blog.numino.net/ For I = 1 To RS.RecordCount g4OemH http://blog.numino.net/ Response.Write RS(0) & "<br>" A3R4X8 http://blog.numino.net/ RS.MoveNext wy3x3A http://blog.numino.net/ Next NJ0ITp http://blog.numino.net/ End If OdXnNW http://blog.numino.net/ RS.Close ZS5GiT http://blog.numino.net/ Set RS = Nothing
|
|