`
starbhhc
  • 浏览: 649532 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

SQL语句 随机读取N条记录

 
阅读更多

利用一条SQL语句从数据库Table表中随机获取N条记录,各数据库的SQL语句略有不同,如下:

1、MySql

1 Select* FromTABLEOrderByRand() Limit N

以上代码效率不高,自己对1000条数据表随机取10条的测试结果为耗时0.125s,有网友推荐改为以下代码效率有大幅提高,耗时为0.005s,不过结果是随机从某个位置开始取N条记录,而不是随机取N条记录,略有差异。详细说明见mysql使用rand随机查询记录效率测试。

2 SELECT* FROM`TABLE` a join(SELECTROUND(RAND() * ((SELECTMAX(id) FROM`TABLE`)-(SELECTMIN(id) FROM`TABLE`))+(SELECTMIN

(id) FROM`TABLE`)) ASid) ASb WHEREa.id >= b.id ORDERBYa.id LIMIT N;
 

2、SQL Server

1 SelectTOPN * FromTABLEOrderByNewID()


NewID()函数将创建一个 uniqueidentifier 类型的唯一值。

3、Access

1 SelectTOPN * FromTABLEOrderByRnd(ID)

Rnd(ID) 其中的ID是自动编号字段,可以利用其他任何数值来完成,比如用姓名字段(UserName)

2 SelectTOPN * FromTABLEOrderBYRnd(Len(UserName))

4、Oracle

1)dbms_random包

1 select* from(select* fromTableorderbydbms_random.value) whererownum < N;

注:dbms_random包需要手工安装,位于$ORACLE_HOME/rdbms/admin/dbmsrand.sql

2 dbms_random.value(100,200)

可以产生100到200范围的随机数

2)按概率抽取:

1 select* fromTablesample(百分比);

3)sys_guid

1 select* from(select* fromTableorderby   sys_guid()) whererownum<N;

5、postgreSQL

1 select* fromTableorderbyrandom() limit N

 

 

 

 

sql里面:
比如读取10条随机记录
select top 10 * from tablename order by newid();

Oracle里面:
1.dbms_random包
select * from (select * from tablename order by dbms_random.value) where rownum < N;
例:
select * from (select * from tablename order by dbms_random.value) where rownum < 3;
注:dbms_random包需要手工安装,位于$ORACLE_HOME/rdbms/admin/dbmsrand.sql
dbms_random.value(100,200)可以产生100到200范围的随机数
2.按概率抽取:
select * from tablename sample(百分比);
例:
select * from tablename sample(10);
3.sys_guid
select * from (select * from tablename orderby   sys_guid()) where rownum<10;

分享到:
评论

相关推荐

    Delphi连接SQL随机显示数据库中的记录..rar

    在TADOQuery的SQL属性中编写SQL查询语句,以获取所需的记录。 3. **随机显示记录**:要随机显示数据库中的记录,我们可以利用SQL的内置函数,如RAND(),配合ORDER BY子句来实现。例如,如果我们有一个名为`...

    用SQL语句表与字段的基本操作、数据库备份等

    9. **前n条记录**: 获取表的前10条记录: ```sql SELECT TOP 10 * FROM table1 WHERE 范围 ``` 10. **排除重复行**: 若要获取仅存在于`tableA`但不在`tableB`和`tableC`中的行: ```sql (SELECT a FROM ...

    ASP.NET 2如何随机读取Access记录

    4. 构建SQL查询语句,目的是选择前10条记录,但不是按常规的升序或降序排列,而是通过在`ORDER BY`子句中添加一个随机表达式`Rnd(-1 * intRandomNumber * id)`来实现随机排序。这里的`id`是表中的主键字段,乘以`-1`...

    通用的SQL语句总结

    ### 通用的SQL语句总结 #### SQL 数据类型与区别 **浮点数与小数类型:** - **FLOAT**: 表示浮点数的一种类型,适用于存储近似数值的数据,例如科学计算或统计分析中可能使用的数值。 - **DOUBLE**: 也是一种...

    SQL增、删、改、查

    这条语句将从表中随机读取10条记录。 八、日程安排提前五分钟提醒 日程安排提前五分钟提醒是指从日程安排表中读取五分钟之前的记录。使用DATEDIFF函数可以实现日程安排提前五分钟提醒的操作。例如: SELECT * ...

    用SQL语句添加删除修改字段及一些表与字段的基本操作

    获取表中前10条记录可以使用以下SQL语句: ```sql SELECT top 10 * FROM table1 WHERE 范围; ``` #### 十、排除重复行并比较多个表 为了得到所有在`TableA`中但不在`TableB`和`TableC`中的行,并且消除所有重复行...

    SQL随机数读取,利用rand()函数

    ### SQL随机数读取——利用RAND()函数 在SQL中,有时我们需要生成随机数来用于各种应用场景,比如数据测试、统计分析或是某些特定业务逻辑的需求等。本文将详细介绍如何在SQL中利用`RAND()`函数结合其他函数来生成...

    ajax_数据库中随机读取5条数据动态在页面中刷新

    在本文中,我们将深入探讨如何使用Ajax从数据库中随机读取5条数据并在网页上动态刷新。Ajax(Asynchronous JavaScript and XML)是一种在不重新加载整个网页的情况下更新部分网页的技术,它通过JavaScript与服务器...

    SQL语句优化技术分析与探讨.pdf

    因此,查询优化的重点在于减少数据库服务器从磁盘读取数据的次数,并优先进行顺序读取而非随机读取。 目前市场上主流的数据库产品有IBM DB2、Microsoft SQL Server 2000、Oracle 9i、Sybase等,以及免费数据库的...

    一种基于SQL的元组集随机抽取算法.pdf

    算法的具体实现思路包括对现有数据库SQL语言中的伪随机函数进行改造,以满足从数据库中随机读取记录集合的需求。由于在SQL语句中,调用一次伪随机函数只能得到一个随机数,因此需要对伪随机函数进行相应的扩展,使其...

    如何从数据库中随机取出10条记录的方法

    ### 如何从数据库中随机取出10条记录的方法 在处理大量数据时,有时我们需要从数据库中随机抽取一部分记录来进行数据分析、测试或者展示等操作。本文将详细介绍如何从数据库中随机取出10条记录的方法,并提供多种...

    SQL基本操作语句

    #### 三、随机读取记录 在不同的数据库系统中,读取随机记录的方法也有所不同: - **Access**:`SELECT TOP 10 * From 表名 ORDER BY Rnd(id);` - **SQL Server**:`SELECT TOP n * FROM 表名 ORDER BY NEWID();` ...

    asp下sql和access数据库随机取10条记录的代码newid()

    另一种不重复读取的方法是只生成一个随机数,然后依次读取该随机数之后的N条记录。这需要确保随机数小于总记录数减去要读取的记录数量。以下是改进后的代码: ```vba Dim n As Integer, ranNum As Integer n = 10 ...

    MySQL日志系统,一条SQL跟新语句是如何执行的,高清

    2. 分析器:连接成功后,分析器会对用户提交的SQL语句进行词法和语法分析,确保SQL语句符合语法规则。 3. 优化器:优化器决定具体的执行计划,比如确定使用哪个索引,以及如何高效地执行查询和更新操作。 4. 执行...

    用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备份等

    9. **获取前n条记录**:使用`TOP`子句可以快速获取表的前n条记录,例如: ```sql SELECT TOP 10 * FROM table1 WHERE 范围; ``` 10. **集合操作**:使用`EXCEPT`操作符可以找出存在于一个表但不在其他表中的行:...

    MySQL SQL语句优化的10条建议

    6. **使用LIMIT 1获取单行数据**:当只需要一条记录时,加上LIMIT 1可以避免扫描整个结果集,提高查询效率。 7. **避免ORDER BY RAND()**:这种操作可能导致全表扫描,对于大数据量,应尽量避免,可以考虑先随机...

    ASP.NET 2.0下随机读取Access记录的实现方法

    例如,以下 SQL 语句本意是随机获取前 10 条记录: ```sql SELECT TOP 10 Title, objectGuid FROM Document ORDER BY Rnd(id) ``` 然而,由于 ADO 的缓存机制,这种方式并不能确保每次查询都能获得随机结果。 ###...

    老司机总结的12条 SQL 优化方案(非常实用).docx

    3. 读取适当的记录 LIMIT M,N,而不要读多余的记录 `SELECT id,name FROM t LIMIT 866613, 20` 使用 LIMIT 分页查询可能会越来越慢,随着表数据量的增加。对于这种情况,应该先取出主键 id,然后通过主键 id 跟原...

    sql 数据库使用游标 随机插入数据

    根据提供的文件信息,我们可以总结出以下SQL数据库使用游标及随机插入数据的相关知识点: ### SQL 游标的使用 #### 1. 游标定义 游标是数据库中的一个临时存储区域,它允许用户通过逐行的方式处理结果集中的数据。...

Global site tag (gtag.js) - Google Analytics