从数据库某个表查询随机查询10条(或N条)数据的方法

转载 2015年11月17日 22:33:03

方法1:最简单的,网上说查询时间长,数据量少的话,使用该方法,不会出错,也不会重复查询。

 select * from t_fb order by rand() limit 10

方法2: 网上说时间短,比较好。但是我的数据量少的情形下,查的数据会少于10条。

SELECT * FROM t_fb  WHERE id >= ((SELECT MAX(id) FROM t_fb )-(SELECT MIN(id) FROM t_fb )) * RAND() + (SELECT MIN(id) FROM t_fb )  LIMIT 10;

该方法说了在数据量少的情形下,查的数据会少于10条。分析一下原因:

(SELECT MAX(id) FROM t_fb ) 查询id的最大值

(SELECT MIN(id) FROM t_fb ) 查询id的最小值

相减乘以一个随机数 再加上id的最小值,以保证生成的数在最大值和最小值之间, 
现在假设MAX(id)为15,生成的随机数为10,那么由于id>=10,所以查询到的行数会少于10.

方法3 .SELECT *  FROM  t_fb as t1 JOIN (SELECT RAND()*10 AS nid) t2 ON t1.id>t2.nid GROUP BY t1.id LIMIT 10

也会有方法2的问题,然后查询出来的值都是连起来的

Android数据库中查找一条数据 query方法详解

public Cursor query(String table,String[] columns,String selection,String[] selectionArgs,String gro...
  • chaozhung
  • chaozhung
  • 2013年06月05日 09:47
  • 9723

从Mysql某一表中随机读取n条数据的SQL查询语句

若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1))。例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机...
  • flower_vip
  • flower_vip
  • 2016年12月07日 15:53
  • 3745

如何在1000万条记录中快速检索? 数据追踪

一些大规模的系统,如人口系统的数据甚至超过了1000万条,可谓海量。那么,如何实现快速地从这些超大容量的数据库中提取数据(查询)、分析、统计以及提取数据后进行数据分页已成为各地系统管理员和数据库管理员...
  • chenghaibing2008
  • chenghaibing2008
  • 2013年01月14日 14:41
  • 8904

从Mysql某一表中随机读取n条数据的SQL查询语句

若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1))。例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机...
  • wo2niliye
  • wo2niliye
  • 2016年12月07日 17:00
  • 237

从Mysql某一表中随机读取n条数据的SQL查询语句

从 Mysql 表中随机读取数据不难,方法还挺多的,但是如果要考虑效率,得到一个快速的高效率的方法 随机获得Mysql数据表的一条或多条记录有很多方法,下面我就以users(userId,use...
  • remotesupport
  • remotesupport
  • 2012年07月05日 13:34
  • 2493

MySQL大数据量分页查询方法及其优化 ---方法1: 直接使用数据库提供的SQL语句 ---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N ---适

MySQL大数据量分页查询方法及其优化 ---方法1: 直接使用数据库提供的SQL语句 ---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LI...
  • Lxj12306
  • Lxj12306
  • 2017年12月04日 09:42
  • 294

SQL oracle 用rownum方法查询最近更新的n条数据

查询最近2小时跟新的记录 Select * From book Where update_time > sysdate-2/24 sysdate+(5/24/60/60) 在系统时间基础上延迟5秒...
  • yanjiaye520
  • yanjiaye520
  • 2014年05月07日 11:35
  • 8974

oracle 用rownum方法查询最近更新的n条数据

查询最近2小时跟新的记录 Select * From book  Where  update_time > sysdate-2/24 sysdate+(5/24/60/60) 在系统时间基础上延迟...
  • tianhaimo
  • tianhaimo
  • 2012年09月01日 12:33
  • 2313

-----------查询数据库素数的N种方法(包括C#的)--------------

最近在看C#方面的书,正好看到迭代器这块,里面有个查询素数的示例我觉得还不错,于是就想到SQL也来实现一把。其实有很多种方法,我大概列下下面。结果就只贴一个好了:方法1: 最简单粗暴的算法DECLAR...
  • fredrickhu
  • fredrickhu
  • 2014年12月29日 15:09
  • 1235

如何随机查询数据库表中的任意一行数据

rand()是MySql的一个内嵌函数,主要用来生成随机数。 在mysql文档中这样解释rand()函数,RAND()/RAND(N) returns a random floating-point...
  • u012859992
  • u012859992
  • 2015年10月26日 18:14
  • 104
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:从数据库某个表查询随机查询10条(或N条)数据的方法
举报原因:
原因补充:

(最多只允许输入30个字)