Chinaunix首页 | 论坛 | 博客
  • 博客访问: 223914
  • 博文数量: 25
  • 博客积分: 1380
  • 博客等级: 中尉
  • 技术积分: 500
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-02 18:19
文章分类

全部博文(25)

文章存档

2010年(4)

2009年(4)

2008年(17)

我的朋友

分类:

2008-04-22 21:18:02

关键字: sql random() rand() newid()

最近实现的一个系统中,遇到了这样的情况:
需要从数据库表中随机读取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 

阅读(3436) | 评论(1) | 转发(0) |
0

上一篇:没有了

下一篇:西方国家这次为什么会如次的团结?

给主人留下些什么吧!~~

chinaunix网友2009-04-07 07:20:25

太有帮助了,非常感谢。