如何随机取记录?(MSSQL、Access、MySql) |
1、数据量少的时候可以使用sql自带的newid()函数 N01154 http://blog.numino.net/ select top 7 from table order by newid() J819T4 http://blog.numino.net/ select top 5 a.columName from (select distinct columName from tableName) a order by newid() SaGLVp http://blog.numino.net/ 2、数据量大则不适合用上述方法了,简单算法: s8tZJM http://blog.numino.net/ 统计表里所有的数据 N,然后返回一个小于N的随机数,再选择一条ID大于N就行了! MA6KFc http://blog.numino.net/ 随机提取10条记录的例子: PBo6cR http://blog.numino.net/ Sql server: H962w8 http://blog.numino.net/ select top 10 * from 表 order by newid() BrM062 http://blog.numino.net/ Access: h9BO0R http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) gq8qBq http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 AobGb5 http://blog.numino.net/ 比如用姓名字段(UserName) TP38EQ http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) O1MWNB http://blog.numino.net/ MySql: dq5ZnN http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 g2msNp http://blog.numino.net/ ========================================================== G9hm7A http://blog.numino.net/ ACCESS可以用RND函数结合ASP中的RND函数来实现随机抽取。 8s7zFk http://blog.numino.net/ <% WIu6Oz http://blog.numino.net/ ... 1KD0Y2 http://blog.numino.net/ Randomize ryKXy0 http://blog.numino.net/ strSQL = "SELECT TOP 1 字段列表 FROM 表名 ORDER BY RND(-(编号字段)*" & RND() & ")" 70DVe5 http://blog.numino.net/ ... kXgdB0 http://blog.numino.net/ %> jb9q61 http://blog.numino.net/ =============================================== 5spNRW http://blog.numino.net/ 要产生指定范围的随机整数,请使用以下公式: 73DWY2 http://blog.numino.net/ Int((upperbound - lowerbound + 1) * Rnd + lowerbound) a3Xq2X http://blog.numino.net/ 这里, upperbound 是此范围的上界,而 lowerbound 是此范围内的下界 GmDBG6 http://blog.numino.net/ ========================================================== r1rgDK http://blog.numino.net/ 随机提取10条记录的例子: weYAOy http://blog.numino.net/ Sql server: EMD270 http://blog.numino.net/ select top 10 * from 表 order by newid() byWZ6w http://blog.numino.net/ Access: x4fio1 http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) qjxAQD http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 gOlR44 http://blog.numino.net/ 比如用姓名字段(UserName) dQ7I1i http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) OFARN3 http://blog.numino.net/ MySql: sR0Wsr http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 34F04C http://blog.numino.net/ IkZ2DI http://blog.numino.net/ vEaN1f http://blog.numino.net/ ======================================================== s9QA85 http://blog.numino.net/ select top 4 * from DataTable order by rnd(-(id+rnd())) 2i6jfQ http://blog.numino.net/ SWfgHU http://blog.numino.net/ ===================================================== LJ21i8 http://blog.numino.net/ ASP&Access随机读取某段数据 71eY4G http://blog.numino.net/ 在网上也搜索了很多,分享下我的方法... aagxiU http://blog.numino.net/ 以下是源代码: kCVDSW http://blog.numino.net/ Randomize(Timer()) 4eVOsI http://blog.numino.net/ SQL = "SELECT TOP 100 ID FROM table1 ORDER BY Rnd(-(ID + " & Int((10000 * Rnd) + 1) & "))" eEG9sC http://blog.numino.net/ Set RS = Server.CreateObject("ADODB.RecordSet") fpXL11 http://blog.numino.net/ RS.Open SQL,Conn,1,1 2N2FUo http://blog.numino.net/ If Not RS.EOF Then nheEXQ http://blog.numino.net/ RS.MoveFirst 9Kd9bc http://blog.numino.net/ For I = 1 To RS.RecordCount EyNUsD http://blog.numino.net/ Response.Write RS(0) & "<br>" WpeJlc http://blog.numino.net/ RS.MoveNext Y1FfA6 http://blog.numino.net/ Next 7Wl7wA http://blog.numino.net/ End If EfaXuB http://blog.numino.net/ RS.Close k8DJSV http://blog.numino.net/ Set RS = Nothing
|
|