表结构:CREATE TABLE `pcnp`.`test` (
`id` INT( 11 ) NOT NULL AUTO_INCREMENT ,
`user_id` INT( 11 ) NOT NULL COMMENT '用户id',
`rc_code` VARCHAR( 50 ) NOT NULL COMMENT '抽奖码',
`dt` DATETIME NOT NULL COMMENT '抽奖码获得日期',
PRIMARY KEY ( `id` ) 
) ENGINE = InnoDB 表数据:id  user_id 用户id rc_code 抽奖码 dt 抽奖码获得日期 
      1 223 23423423 2011-07-20 21:09:28 
      2 223 2342232f3 2011-07-20 18:09:28 
      3 224 sf232f3 2011-07-20 18:44:28 
      4 223 sfsdff3 2011-07-20 18:44:28 
      5 225 sfsdfsdff3 2011-07-20 21:44:28 
      6 226 sfsdfsdff3 2011-07-20 21:44:28 
      7 227 sfsdfsdtttff3 2011-07-20 21:46:28 
      8 223 sfsdfs33tff3 2011-07-20 20:46:28 
想从中取出随机取出user_id不重复的记录,但有一个条件:某个相同的user_id记录数越多,被随机抽中的几率越大,该怎么实现?

解决方案 »

  1.   

    某个相同的user_id记录数越多,被随机抽中的几率越大,竟然是随机那么这个条件也就自然存在了.所以只需要随机搜索出几条结果去掉重复的部分应该就可以了吧
      

  2.   

    本帖最后由 xuzuning 于 2011-07-21 10:38:47 编辑
      

  3.   

    修改一下唠叨大哥的代码 select * from test group by user_id order by rand()*count(*) desc limit 10