| 如何随机取记录?(MSSQL、Access、MySql) |
1、数据量少的时候可以使用sql自带的newid()函数 JZPxO0 http://blog.numino.net/ select top 7 from table order by newid() SPLmxy http://blog.numino.net/ select top 5 a.columName from (select distinct columName from tableName) a order by newid() mjboYS http://blog.numino.net/ 2、数据量大则不适合用上述方法了,简单算法: QuH5sq http://blog.numino.net/ 统计表里所有的数据 N,然后返回一个小于N的随机数,再选择一条ID大于N就行了! 9yZEVY http://blog.numino.net/ 随机提取10条记录的例子: Auxv7F http://blog.numino.net/ Sql server: riW0A3 http://blog.numino.net/ select top 10 * from 表 order by newid() ViXUV6 http://blog.numino.net/ Access: 3WOxS8 http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) 6CpBW5 http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 whUig0 http://blog.numino.net/ 比如用姓名字段(UserName) 9qdT5Z http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) S4vC69 http://blog.numino.net/ MySql: 3WUiT3 http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 95eJvx http://blog.numino.net/ ========================================================== TNkqU7 http://blog.numino.net/ ACCESS可以用RND函数结合ASP中的RND函数来实现随机抽取。 4RbA86 http://blog.numino.net/ <% kQsd1D http://blog.numino.net/ ... SeETck http://blog.numino.net/ Randomize Pb18JW http://blog.numino.net/ strSQL = "SELECT TOP 1 字段列表 FROM 表名 ORDER BY RND(-(编号字段)*" & RND() & ")" 3z3M8i http://blog.numino.net/ ... ti4Rnz http://blog.numino.net/ %> Z5pLs3 http://blog.numino.net/ =============================================== uKIfGb http://blog.numino.net/ 要产生指定范围的随机整数,请使用以下公式: j9vy26 http://blog.numino.net/ Int((upperbound - lowerbound + 1) * Rnd + lowerbound) 93K6gy http://blog.numino.net/ 这里, upperbound 是此范围的上界,而 lowerbound 是此范围内的下界 0k7tcg http://blog.numino.net/ ========================================================== uZyW1d http://blog.numino.net/ 随机提取10条记录的例子: 41oD1r http://blog.numino.net/ Sql server: N7Yzh0 http://blog.numino.net/ select top 10 * from 表 order by newid() DBFrzf http://blog.numino.net/ Access: yHHrMA http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) QPzf5w http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 pXghD6 http://blog.numino.net/ 比如用姓名字段(UserName) hfzN3N http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) 41i7sR http://blog.numino.net/ MySql: BtlVvc http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 HNpKZD http://blog.numino.net/ Z1XI4D http://blog.numino.net/ 8ib1lF http://blog.numino.net/ ======================================================== VMGIeR http://blog.numino.net/ select top 4 * from DataTable order by rnd(-(id+rnd())) o7iKP8 http://blog.numino.net/ j5wYDA http://blog.numino.net/ ===================================================== cEoyQ4 http://blog.numino.net/ ASP&Access随机读取某段数据 ZO62AQ http://blog.numino.net/ 在网上也搜索了很多,分享下我的方法... HDq4rf http://blog.numino.net/ 以下是源代码: icewBD http://blog.numino.net/ Randomize(Timer()) 28yzq0 http://blog.numino.net/ SQL = "SELECT TOP 100 ID FROM table1 ORDER BY Rnd(-(ID + " & Int((10000 * Rnd) + 1) & "))" 50Py2Q http://blog.numino.net/ Set RS = Server.CreateObject("ADODB.RecordSet") vLMu8s http://blog.numino.net/ RS.Open SQL,Conn,1,1 K8sj2s http://blog.numino.net/ If Not RS.EOF Then 0y3t6U http://blog.numino.net/ RS.MoveFirst 0wxKv0 http://blog.numino.net/ For I = 1 To RS.RecordCount 2OWHEc http://blog.numino.net/ Response.Write RS(0) & "<br>" Iapjnz http://blog.numino.net/ RS.MoveNext sRCqq1 http://blog.numino.net/ Next 7fC2rF http://blog.numino.net/ End If A354Wx http://blog.numino.net/ RS.Close N1vu8s http://blog.numino.net/ Set RS = Nothing
|
|