四種數據庫,取隨機記錄的方法
2024-07-21 02:05:54
供稿:網友
本文來源于網頁設計愛好者web開發社區http://www.html.org.cn收集整理,歡迎訪問。
mysql:select * from tablename order by rand() limit 10sqlserver:select top 10 * from tablename order by newid()
oracle:使用 dbms random value的一種方法
sql> select *from (select *from t order by dbms_random.value) where rownum<10;
a ---------- 39 101 134 5 83 97 96 140 81
已選擇9行。
sql> select *from (select *from t order by dbms_random.value) where rownum<10;
a ---------- 27 118 141 103 128 10 142 68 74 有人說這是一種效率最差的方法,懇請告知比這更好的解決方案!
access(一):
yourstr="*1*3*4*6*12*...."sql="select top 10 * form yourdb where instr('*'&id&'*','"&yourstr&"')<>0
access(二):
<% n=10 ''取任意10條記錄 set rs = server.createobject ("adodb.recordset") sql = "select * from table" rs.open sql,conn,1,1 count=rs.recordcount ''記錄總數 if count<>empty then randomize for i = 1 to n ''循環n次 num=fix(rnd*count) ''num便是隨機產生的記錄行數,用fix(),使其不會大于count值。 rs.move num ''移到改隨機行 response.write rs(0) ''出該條記錄 rs.movefirst ''別忘了再把指針移到第一條 next end if rs.close set rs = nothing%>
sql> select *from (select *from t order by dbms_random.value) where rownum<10;
a ---------- 39 101 134 5 83 97 96 140 81
已選擇9行。
sql> select *from (select *from t order by dbms_random.value) where rownum<10;
a ---------- 27 118 141 103 128 10 142 68 74 有人說這是一種效率最差的方法,懇請告知比這更好的解決方案!
access(一):
yourstr="*1*3*4*6*12*...."sql="select top 10 * form yourdb where instr('*'&id&'*','"&yourstr&"')<>0
access(二):
<% n=10 ''取任意10條記錄 set rs = server.createobject ("adodb.recordset") sql = "select * from table" rs.open sql,conn,1,1 count=rs.recordcount ''記錄總數 if count<>empty then randomize for i = 1 to n ''循環n次 num=fix(rnd*count) ''num便是隨機產生的記錄行數,用fix(),使其不會大于count值。 rs.move num ''移到改隨機行 response.write rs(0) ''出該條記錄 rs.movefirst ''別忘了再把指針移到第一條 next end if rs.close set rs = nothing%>