假有如下一张表:guild
id,gname,recruit,teamlevel
即有id,公会名称,招募条件,团队等级等字段,我现在是想把recruit和teamlevel作为查询条件,随机取10条记录。
网上查了下,官方有order by rand()函数,但是说效率很低。求各位sql大神支招!
回复 (7)
C
搞什么随机啊,当然是搞竞价啦,哪家给钱就把推到前面去
I
引用 captainblue2013搞什么随机啊,当然是搞竞价啦,哪家给钱就把推到前面去
@captainblue2013 =.= 需求是游戏公会,当玩家没有加入公会的时候,随机推荐一定数量可加入的公会给玩家。。。。
C
引用 im-here@captainblue2013 =.= 需求是游戏公会,当玩家没有加入公会的时候,随机推荐一定数量可加入的公会给玩家。。。。
@imhered 老夫一看就看出来了,这都不搞竞价你是不是傻
I
引用 captainblue2013@imhered 老夫一看就看出来了,这都不搞竞价你是不是傻
@captainblue2013 我们不是百度,我们是良心企业!
C
引用 im-here@captainblue2013 我们不是百度,我们是良心企业!
@imhered 轻轻一点,百万到手
Z
第一步:根据目标表取出一个 取整(最大值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;
这种搞法应该是最快的,你也可以用平均值,或者最大最小差值当随机因子,这样分布可能更加均匀。
参与回复
登录后即可参与回复。登录