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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值