`

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

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

相关推荐

    SQL_Sever数据库常用语句大全.zip

    SQL_Sever数据库常用语句大全.zip SQL_Sever数据库常用命令大全.zip power函数获取数值的n次方 round函数保留指定位数小数点(指定位数后四舍五入) sign函数判断正数负数和零 sqrt平方根函数 convert转换数据类型...

    SQL随机提取N条记录

    运用SQL随机抽取N条记录的方法,初学者

    经典SQL语句大全

    因为这样可以避免 top的字段如果是逻辑索引的,查询的结果后实际表中的不一致(逻辑索引中的数据有可能和数据表中的不一致,而查询时如果处在索引则首先查询索引) 14、说明:前10条记录 select top 10 * form table...

    数据库操作语句大全(sql)

    因为这样可以避免 top的字段如果是逻辑索引的,查询的结果后实际表中的不一致(逻辑索引中的数据有可能和数据表中的不一致,而查询时如果处在索引则首先查询索引) 14、说明:前10条记录 select top 10 * form ...

    经典全面的SQL语句大全

    随机选择数据库记录的方法(使用Randomize函数,通过SQL语句实现)  对存储在数据库中的数据来说,随机数特性能给出上面的效果,但它们可能太慢了些。你不能要求ASP“找个随机数”然后打印出来。实际上常见的解决...

    从MySQL数据库表中取出随机数据的代码

    MySQL 如何从表中取出随机数据  以前在群里讨论过这个问题,比较的有意思.mysql的语法真好玩. 他们原来都想用PHP的实现随机,但取出多条好像要进行两次以上查询. 翻了手册,找到了下面这个语句,可以完成任务了 ...

    Access数据库随机抽取记录条数.zip

    Access数据库随机抽取记录条数.zip

    用SQL语句实现随机查询数据并不显示错误数据的方法

    问题:上级单位要来检查数据,我的服务器的数据库是SQL server 2000,上级单位要求我用SQL语句在服务器端随机查询50条数据出来。可是我的服务器里有些错误数据不希望他们看到,能不能有什么办法不让他们看到。 SQL...

    SQL语句常用汇总

    from 数据表 where 字段名 order by 字段名 [desc]" 查找数据库中前10记录 <br>Sql="select top n * form 数据表 order by newid()" 随机取出数据库中的若干条记录的方法 top n,n就是要取出的记录...

    自动生成全国所有省市的sql语句

    吧里面的sql语句放在自己数据库编辑器页面 执行生成以下 就能吧目前 全国的所有省市 加入自己数据库 方便一步到位

    Mysql快速生成10000条随机数据(存储过程)脚本

    通过存储过程快速生成实验所需的随机数据,包含创建表,创建存储过程和调用存储过程

    SQL SERVER数据库批量更新程序 1.0.0.30

    2.支持将记录集导入为txt、xml以及wps excel或者office excel文件中,对超过65536行的查询结果集自动拆分工作表。 3.支持查询结果在水晶报表工具简单展示。 4.支持将查询出的结果集,批量复制到多个sql server服务器...

    超实用sql语句

    因为这样可以避免 top的字段如果是逻辑索引的,查询的结果后实际表中的不一致(逻辑索引中的数据有可能和数据表中的不一致,而查询时如果处在索引则首先查询索引) 14、说明:前10条记录 select top 10 * form table...

    随机提取Access/SqlServer数据库中的10条记录的SQL语句

    但在ASP+Access中,或许是因为缓存的原因,第一条SQL语句无法得到预期的结果,而VB+Access则可以。解决办法是改用如下SQL语句:  本文相关代码如下:RandomizesSqlTxt=”Select top 10 * From Tab order by rnd(-...

    经典SQL脚本大全

    │ │ 3.6.4 动态他Transact-SQL语句处理中的常见问题演示.sql │ │ 3.7.3 text与ntext字段的复制和合并处理示例.sql │ │ 3.7.4 text与image字段转换处理示例.sql │ │ 3.7.5 ntext字段的REPLACE处理示例.sql │...

    sqlgenerator:使用JavaSQL语句生成器

    使用JavaSQL语句生成器 以下示例生成 SQL 语句。 实体类 - 这表示数据库中的一个表。 字段类 - 这表示表中的一个字段。 每个字段都属于一个实体。 联接类 - 这表示任意两个表之间的联接。 EntityLookup 类 - 该...

    sql经典语句一部分

    因为这样可以避免 top的字段如果是逻辑索引的,查询的结果后实际表中的不一致(逻辑索引中的数据有可能和数据表中的不一致,而查询时如果处在索引则首先查询索引) 14、说明:前10条记录 select top 10 * form table...

    数据库中要产生随机整数的方法

    组要介绍的是用关于在对数据库操作中用sql语句来产生随机数(包括随机整数) 这样的方法可用在很多方面如 在线随机考试等

    thinkphp中多表查询中防止数据重复的sql语句(必看)

    下面先来看看例子: table id name 1 a 2 b 3 c 4 c 5 b 库结构大概这样,这只是一个简单的例子,实际情况会复杂得多。 select *, count(distinct name) from table group by name 结果: ...$

Global site tag (gtag.js) - Google Analytics