关闭

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

210人阅读 评论(0) 收藏 举报

方法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的问题,然后查询出来的值都是连起来的

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:8289次
    • 积分:156
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:9篇
    • 译文:0篇
    • 评论:0条
    文章分类