| 如何随机取记录?(MSSQL、Access、MySql) |
1、数据量少的时候可以使用sql自带的newid()函数 0LR95o http://blog.numino.net/ select top 7 from table order by newid() fh42qP http://blog.numino.net/ select top 5 a.columName from (select distinct columName from tableName) a order by newid() FEHO1f http://blog.numino.net/ 2、数据量大则不适合用上述方法了,简单算法: 5cTyA0 http://blog.numino.net/ 统计表里所有的数据 N,然后返回一个小于N的随机数,再选择一条ID大于N就行了! fhv9ry http://blog.numino.net/ 随机提取10条记录的例子: 3SWYCr http://blog.numino.net/ Sql server: U0xa84 http://blog.numino.net/ select top 10 * from 表 order by newid() A8MMr6 http://blog.numino.net/ Access: 109xQd http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) Z1nb3S http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 0TLnTf http://blog.numino.net/ 比如用姓名字段(UserName) 3gEU7D http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) 9xzaZ6 http://blog.numino.net/ MySql: f44vJC http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 55n8Vt http://blog.numino.net/ ========================================================== s82nzh http://blog.numino.net/ ACCESS可以用RND函数结合ASP中的RND函数来实现随机抽取。 2yoZBk http://blog.numino.net/ <% 18780z http://blog.numino.net/ ... 8a74nY http://blog.numino.net/ Randomize s3ptlQ http://blog.numino.net/ strSQL = "SELECT TOP 1 字段列表 FROM 表名 ORDER BY RND(-(编号字段)*" & RND() & ")" 7JOrRf http://blog.numino.net/ ... jgX8HN http://blog.numino.net/ %> HKV2mg http://blog.numino.net/ =============================================== duHPoV http://blog.numino.net/ 要产生指定范围的随机整数,请使用以下公式: Czsb4r http://blog.numino.net/ Int((upperbound - lowerbound + 1) * Rnd + lowerbound) ZbrxRQ http://blog.numino.net/ 这里, upperbound 是此范围的上界,而 lowerbound 是此范围内的下界 M2vP34 http://blog.numino.net/ ========================================================== F924T4 http://blog.numino.net/ 随机提取10条记录的例子: fe6W71 http://blog.numino.net/ Sql server: hSxKxp http://blog.numino.net/ select top 10 * from 表 order by newid() 58QMEO http://blog.numino.net/ Access: Hg8SEW http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) gyNUl0 http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 S6P7ak http://blog.numino.net/ 比如用姓名字段(UserName) 8d9jB5 http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) 1r2Dm3 http://blog.numino.net/ MySql: r3YWys http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 UJsxu3 http://blog.numino.net/ UQZ0xU http://blog.numino.net/ Jn6dKA http://blog.numino.net/ ======================================================== 7Vv15n http://blog.numino.net/ select top 4 * from DataTable order by rnd(-(id+rnd())) lNW2gV http://blog.numino.net/ 3GNK98 http://blog.numino.net/ ===================================================== iYxdBA http://blog.numino.net/ ASP&Access随机读取某段数据 o5q3oc http://blog.numino.net/ 在网上也搜索了很多,分享下我的方法... P29SU7 http://blog.numino.net/ 以下是源代码: 84p79R http://blog.numino.net/ Randomize(Timer()) SMwryA http://blog.numino.net/ SQL = "SELECT TOP 100 ID FROM table1 ORDER BY Rnd(-(ID + " & Int((10000 * Rnd) + 1) & "))" TaW1ZL http://blog.numino.net/ Set RS = Server.CreateObject("ADODB.RecordSet") uks6G0 http://blog.numino.net/ RS.Open SQL,Conn,1,1 yjtVEx http://blog.numino.net/ If Not RS.EOF Then IjsU0x http://blog.numino.net/ RS.MoveFirst 0LBgAU http://blog.numino.net/ For I = 1 To RS.RecordCount 56xguJ http://blog.numino.net/ Response.Write RS(0) & "<br>" WEYtVF http://blog.numino.net/ RS.MoveNext BdQ0Ws http://blog.numino.net/ Next 58AT59 http://blog.numino.net/ End If 6Qp6ao http://blog.numino.net/ RS.Close jJI5Ru http://blog.numino.net/ Set RS = Nothing
|
|