网上好几个经典示例,一般都用rand()函数,此处用其中一列说明
SELECT * FROM user where user_id >= ((SELECT MAX(user_id) FROM user)
-(SELECT MIN(user_id) FROM user)) * RAND()
+ (SELECT MIN(user_id) FROM user) LIMIT 1
当rand()获取的0和1 这2个极端随机数后,查询语句的结果才会显示出第一条和最后一条数据,假如有4条数据,这4条数据出现的概率并不是各25%(由于出现0/1几率较小,一般都是0.**),例如对抽奖算法中,对第一个参与者非常不公平
这种事情不应该是业务层做吗……
直接按算法选出一个id再读数据库吧……