如何随机取记录?(MSSQL、Access、MySql) |
1、数据量少的时候可以使用sql自带的newid()函数 kEMIFx http://blog.numino.net/ select top 7 from table order by newid() 6gez86 http://blog.numino.net/ select top 5 a.columName from (select distinct columName from tableName) a order by newid() 3aNzSU http://blog.numino.net/ 2、数据量大则不适合用上述方法了,简单算法: W2oAUp http://blog.numino.net/ 统计表里所有的数据 N,然后返回一个小于N的随机数,再选择一条ID大于N就行了! KIv4Oq http://blog.numino.net/ 随机提取10条记录的例子: 2Fi02Z http://blog.numino.net/ Sql server: vOE9Up http://blog.numino.net/ select top 10 * from 表 order by newid() 74X9cC http://blog.numino.net/ Access: 9Ss6Mq http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) tOM000 http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 61X7X4 http://blog.numino.net/ 比如用姓名字段(UserName) Han9sa http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) XsAsJ4 http://blog.numino.net/ MySql: DxT8qK http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 oFEkKx http://blog.numino.net/ ========================================================== X3SU8A http://blog.numino.net/ ACCESS可以用RND函数结合ASP中的RND函数来实现随机抽取。 7vLtst http://blog.numino.net/ <% F2NTgL http://blog.numino.net/ ... pk0djr http://blog.numino.net/ Randomize wtkYuO http://blog.numino.net/ strSQL = "SELECT TOP 1 字段列表 FROM 表名 ORDER BY RND(-(编号字段)*" & RND() & ")" JC424O http://blog.numino.net/ ... y0ZUkW http://blog.numino.net/ %> JI36O3 http://blog.numino.net/ =============================================== EFJRBy http://blog.numino.net/ 要产生指定范围的随机整数,请使用以下公式: JbduS0 http://blog.numino.net/ Int((upperbound - lowerbound + 1) * Rnd + lowerbound) 2YCRPT http://blog.numino.net/ 这里, upperbound 是此范围的上界,而 lowerbound 是此范围内的下界 IG9fPW http://blog.numino.net/ ========================================================== XQny9g http://blog.numino.net/ 随机提取10条记录的例子: q10X5u http://blog.numino.net/ Sql server: 5mDB7k http://blog.numino.net/ select top 10 * from 表 order by newid() 6GGq9H http://blog.numino.net/ Access: RLfd64 http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) AwYZ3O http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 ABnENc http://blog.numino.net/ 比如用姓名字段(UserName) fHebc9 http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) fptx4v http://blog.numino.net/ MySql: Ga244l http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 rPylAa http://blog.numino.net/ 8tBmO4 http://blog.numino.net/ TpbUKk http://blog.numino.net/ ======================================================== n1RscE http://blog.numino.net/ select top 4 * from DataTable order by rnd(-(id+rnd())) DuEPEh http://blog.numino.net/ DlfL81 http://blog.numino.net/ ===================================================== qf6nSl http://blog.numino.net/ ASP&Access随机读取某段数据 6g668j http://blog.numino.net/ 在网上也搜索了很多,分享下我的方法... 0WK77H http://blog.numino.net/ 以下是源代码: GMGnI4 http://blog.numino.net/ Randomize(Timer()) t0FjeD http://blog.numino.net/ SQL = "SELECT TOP 100 ID FROM table1 ORDER BY Rnd(-(ID + " & Int((10000 * Rnd) + 1) & "))" vdW5eA http://blog.numino.net/ Set RS = Server.CreateObject("ADODB.RecordSet") VRWh9v http://blog.numino.net/ RS.Open SQL,Conn,1,1 iax281 http://blog.numino.net/ If Not RS.EOF Then Ar7myL http://blog.numino.net/ RS.MoveFirst QnnFwv http://blog.numino.net/ For I = 1 To RS.RecordCount RKEH1H http://blog.numino.net/ Response.Write RS(0) & "<br>" pBQBJA http://blog.numino.net/ RS.MoveNext S3p1U6 http://blog.numino.net/ Next R3LFFG http://blog.numino.net/ End If GlP4wj http://blog.numino.net/ RS.Close 07hv0i http://blog.numino.net/ Set RS = Nothing
|
|