数据库的随机查询SQL
1. Oracle,随机查询20条
select * from
(
select * from 表名
order by dbms_random.value
)
where rownum <= 20;="" 2.ms="" sql="" server,随机查询20条="" select="" top="" 20="" *="" from="" 表名order="" by="" newid()="" 3.my="" sql:,随机查询20条="" select="" *="" from="" 表名="" order="" by="" rand()="" limit="">=>
最近实现的一个系统中,遇到了这样的情况:需要从数据库表中随机读取n条记录,必须保证每条记录都不相同.原来的想法是弄两个链表,第一个读取对应数据库表中的所有记录,根据每个记录的id来生成这个链表;第二个链表是有选定的随机读取的记录生成的,这样从第一个链表中选定的,就可以剪掉,以后就不会被选种,把选中的添加到第二个链表中.后来发现,在不同的数据库中完全可以用sql语句来实现随机选定不同记录.这里把不同数据库实现的语句粘在这里,以供需要的人来参考.select a random row with mysql:select column from tableorder by rand()limit 1select a random row with postgresql:select column from tableorder by random()limit 1select a random row with microsoft sql server:select top 1 column from tableorder by newid()select a random row with ibm db2:select column, rand() as idx from table order by idx fetch first 1 rows onlyselect a random record with oracle:select column from( select column from tableorder by dbms_random.value )where rownum = 1
用户登录
还没有账号?立即注册
用户注册
投稿取消
文章分类: |
|
还能输入300字
上传中....