| 如何随机取记录?(MSSQL、Access、MySql) |
1、数据量少的时候可以使用sql自带的newid()函数 4FHhoF http://blog.numino.net/ select top 7 from table order by newid() HJyMYn http://blog.numino.net/ select top 5 a.columName from (select distinct columName from tableName) a order by newid() m8XOJM http://blog.numino.net/ 2、数据量大则不适合用上述方法了,简单算法: D1dN5P http://blog.numino.net/ 统计表里所有的数据 N,然后返回一个小于N的随机数,再选择一条ID大于N就行了! c6UF4n http://blog.numino.net/ 随机提取10条记录的例子: soTNj7 http://blog.numino.net/ Sql server: ShclYc http://blog.numino.net/ select top 10 * from 表 order by newid() kcwh6s http://blog.numino.net/ Access: 3h2m5K http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) aZiWsL http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 oOIO77 http://blog.numino.net/ 比如用姓名字段(UserName) RPruTZ http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) FUOFFn http://blog.numino.net/ MySql: OQ3V0f http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 gwKXZZ http://blog.numino.net/ ========================================================== kelN9B http://blog.numino.net/ ACCESS可以用RND函数结合ASP中的RND函数来实现随机抽取。 0E3FiE http://blog.numino.net/ <% ILmH3S http://blog.numino.net/ ... zEUp9a http://blog.numino.net/ Randomize 0OUhZQ http://blog.numino.net/ strSQL = "SELECT TOP 1 字段列表 FROM 表名 ORDER BY RND(-(编号字段)*" & RND() & ")" ypBFRK http://blog.numino.net/ ... 2M6kNP http://blog.numino.net/ %> rSvtHL http://blog.numino.net/ =============================================== TjaT1Q http://blog.numino.net/ 要产生指定范围的随机整数,请使用以下公式: d6mP59 http://blog.numino.net/ Int((upperbound - lowerbound + 1) * Rnd + lowerbound) gTx6B3 http://blog.numino.net/ 这里, upperbound 是此范围的上界,而 lowerbound 是此范围内的下界 sBlIfq http://blog.numino.net/ ========================================================== oxQg3i http://blog.numino.net/ 随机提取10条记录的例子: 22sOzs http://blog.numino.net/ Sql server: cl4UiH http://blog.numino.net/ select top 10 * from 表 order by newid() eEF2hk http://blog.numino.net/ Access: QLt3kt http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) 8Us6iL http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 03Fnq2 http://blog.numino.net/ 比如用姓名字段(UserName) 44PS2u http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) Ts36LI http://blog.numino.net/ MySql: iRc3H9 http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 2LS1kb http://blog.numino.net/ nL3NGQ http://blog.numino.net/ 27tvyz http://blog.numino.net/ ======================================================== rxBOkn http://blog.numino.net/ select top 4 * from DataTable order by rnd(-(id+rnd())) uUX4z3 http://blog.numino.net/ 6X19zU http://blog.numino.net/ ===================================================== kRoxqI http://blog.numino.net/ ASP&Access随机读取某段数据 AgYLtS http://blog.numino.net/ 在网上也搜索了很多,分享下我的方法... P264aT http://blog.numino.net/ 以下是源代码: QoifSX http://blog.numino.net/ Randomize(Timer()) hol2MK http://blog.numino.net/ SQL = "SELECT TOP 100 ID FROM table1 ORDER BY Rnd(-(ID + " & Int((10000 * Rnd) + 1) & "))" 4I9m6N http://blog.numino.net/ Set RS = Server.CreateObject("ADODB.RecordSet") Mbl0oQ http://blog.numino.net/ RS.Open SQL,Conn,1,1 8Ny2QJ http://blog.numino.net/ If Not RS.EOF Then A58z3N http://blog.numino.net/ RS.MoveFirst KbQyT2 http://blog.numino.net/ For I = 1 To RS.RecordCount 8n8Q6f http://blog.numino.net/ Response.Write RS(0) & "<br>" CSJR6f http://blog.numino.net/ RS.MoveNext 98e62t http://blog.numino.net/ Next o6gKL3 http://blog.numino.net/ End If FNW1gu http://blog.numino.net/ RS.Close qZzpDK http://blog.numino.net/ Set RS = Nothing
|
|