mysql随机查询若干条数据问题
发布于 9 年前 作者 im-here 4684 次浏览 最后一次编辑是 8 年前 来自 问答

假有如下一张表:guild id,gname,recruit,teamlevel 即有id,公会名称,招募条件,团队等级等字段,我现在是想把recruit和teamlevel作为查询条件,随机取10条记录。 网上查了下,官方有order by rand()函数,但是说效率很低。求各位sql大神支招!

7 回复

搞什么随机啊,当然是搞竞价啦,哪家给钱就把推到前面去

@captainblue2013 =.= 需求是游戏公会,当玩家没有加入公会的时候,随机推荐一定数量可加入的公会给玩家。。。。

@imhered 老夫一看就看出来了,这都不搞竞价你是不是傻

@captainblue2013 我们不是百度,我们是良心企业!

@imhered 轻轻一点,百万到手

第一步:根据目标表取出一个 取整(最大值ID * 随机值) select rount( max(id) * rand() ) from table 第二步:目标表与计算的随机值进行join,然后过滤 select * from table t1 join (select rount( max(id) * rand() ) as id from table) t2 on t1.id > t2.id order by t1.id limit 0,5;

这种搞法应该是最快的,你也可以用平均值,或者最大最小差值当随机因子,这样分布可能更加均匀。

@zouzhenxing 谢谢,我看看

回到顶部