六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 85|回复: 0

SQL语句如何实现从数据库表中查询随机数据的记录

[复制链接]

升级  54%

5

主题

5

主题

5

主题

童生

Rank: 1

积分
27
 楼主| 发表于 2013-1-13 19:00:42 | 显示全部楼层 |阅读模式
需要从数据库表中随机读取n条记录,必须保证每条记录都不相同.

原来的想法是弄两个链表,第一个读取对应数据库表中的所有记录,根据每个记录的ID来生成这个链表;第二个链表是有选定的随机读取的记录生成的,这样从第一个链表中选定的,就可以剪掉,以后就不会被选种,把选中的添加到第二个链表中.

后来发现,在不同的数据库中完全可以用SQL语句来实现随机选定不同记录.
这里把不同数据库实现的语句粘在这里,以供需要的人来参考.

Select a random row with MySQL:
SELECT column FROM table   ORDER BY RAND()   LIMIT 1

Select a random row with PostgreSQL:
SELECT column FROM table   ORDER BY RANDOM()   LIMIT 1  

Select a random row with Microsoft SQL Server:
SELECT TOP 1 column FROM table   ORDER BY NEWID()  

Select a random row with IBM DB2:
SELECT column, RAND() as IDX    FROM table    ORDER BY IDX FETCH FIRST 1 ROWS ONLY

Select a random record with Oracle:
SELECT column FROM   ( SELECT column FROM table   ORDER BY dbms_random.value )   WHERE rownum = 1
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表