| 如何随机取记录?(MSSQL、Access、MySql) |
1、数据量少的时候可以使用sql自带的newid()函数 q1z8sd http://blog.numino.net/ select top 7 from table order by newid() BPPBXm http://blog.numino.net/ select top 5 a.columName from (select distinct columName from tableName) a order by newid() e0hIC8 http://blog.numino.net/ 2、数据量大则不适合用上述方法了,简单算法: lb7FwZ http://blog.numino.net/ 统计表里所有的数据 N,然后返回一个小于N的随机数,再选择一条ID大于N就行了! S6VU98 http://blog.numino.net/ 随机提取10条记录的例子: GV0nvl http://blog.numino.net/ Sql server: H1hGhw http://blog.numino.net/ select top 10 * from 表 order by newid() m4KC9n http://blog.numino.net/ Access: mb6Hju http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) A0Llj9 http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 Y3TGVY http://blog.numino.net/ 比如用姓名字段(UserName) 4kOh6H http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) PLWGQ0 http://blog.numino.net/ MySql: WBsmz1 http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 2U9Ug6 http://blog.numino.net/ ========================================================== hYWpHu http://blog.numino.net/ ACCESS可以用RND函数结合ASP中的RND函数来实现随机抽取。 oZ1DVT http://blog.numino.net/ <% 9GGa7X http://blog.numino.net/ ... icM12g http://blog.numino.net/ Randomize jelhos http://blog.numino.net/ strSQL = "SELECT TOP 1 字段列表 FROM 表名 ORDER BY RND(-(编号字段)*" & RND() & ")" 9wnTuR http://blog.numino.net/ ... i249yO http://blog.numino.net/ %> NTxBkJ http://blog.numino.net/ =============================================== EYI8wO http://blog.numino.net/ 要产生指定范围的随机整数,请使用以下公式: ZjA14o http://blog.numino.net/ Int((upperbound - lowerbound + 1) * Rnd + lowerbound) E5wcbj http://blog.numino.net/ 这里, upperbound 是此范围的上界,而 lowerbound 是此范围内的下界 ANt3cm http://blog.numino.net/ ========================================================== TyJ10I http://blog.numino.net/ 随机提取10条记录的例子: 5EQR4g http://blog.numino.net/ Sql server: 25l9h5 http://blog.numino.net/ select top 10 * from 表 order by newid() u1sulG http://blog.numino.net/ Access: 9nh9u3 http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(id) 2JuCR0 http://blog.numino.net/ Rnd(id) 其中的id是自动编号字段,可以利用其他任何数值来完成 yAqMdA http://blog.numino.net/ 比如用姓名字段(UserName) IXZj36 http://blog.numino.net/ SELECT top 10 * FROM 表 ORDER BY Rnd(len(UserName)) rV76Vq http://blog.numino.net/ MySql: Dyt6w9 http://blog.numino.net/ Select * From 表 Order By rand() Limit 10 qI3p6p http://blog.numino.net/ 52mWEJ http://blog.numino.net/ RwKjLS http://blog.numino.net/ ======================================================== C6xIrf http://blog.numino.net/ select top 4 * from DataTable order by rnd(-(id+rnd())) EEh926 http://blog.numino.net/ PR7u9q http://blog.numino.net/ ===================================================== W2CMHb http://blog.numino.net/ ASP&Access随机读取某段数据 sMZgkB http://blog.numino.net/ 在网上也搜索了很多,分享下我的方法... YILJGZ http://blog.numino.net/ 以下是源代码: T8f2Nq http://blog.numino.net/ Randomize(Timer()) 4PdRMG http://blog.numino.net/ SQL = "SELECT TOP 100 ID FROM table1 ORDER BY Rnd(-(ID + " & Int((10000 * Rnd) + 1) & "))" jujIE8 http://blog.numino.net/ Set RS = Server.CreateObject("ADODB.RecordSet") JjCI45 http://blog.numino.net/ RS.Open SQL,Conn,1,1 2A0Oza http://blog.numino.net/ If Not RS.EOF Then LnyBY1 http://blog.numino.net/ RS.MoveFirst XCZ21P http://blog.numino.net/ For I = 1 To RS.RecordCount GaBB7S http://blog.numino.net/ Response.Write RS(0) & "<br>" GGUv2l http://blog.numino.net/ RS.MoveNext r4ZNlb http://blog.numino.net/ Next 33Qw50 http://blog.numino.net/ End If tjVosB http://blog.numino.net/ RS.Close V69he2 http://blog.numino.net/ Set RS = Nothing
|
|