如题,
表结构如下:
DROP TABLE IF EXISTS `tmp1`;
CREATE TABLE  `tmp1` (
  `id` int(11) DEFAULT NULL,
  `bid` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into tmp1(id,bid)
values(1,1),(2,1),(3,2),(4,2);
id bid
1, 1
2, 1
3, 2
4, 2
求相同的bid 随机取一行数据(随机)
形成结果集如下:(其中的一种情况)
id bid
1,1
4,2

解决方案 »

  1.   

    参考下贴中的多种方法 (N=1)http://topic.csdn.net/u/20091231/16/2f268740-391e-40f2-a15e-f243b2c925ab.html
    [征集]分组取最大N条记录方法征集,及散分....
      

  2.   

    select * from  `tmp1` Group by bid
      

  3.   

    select * from (select * from tmp1 order by rand())T group by bid;
      

  4.   

    SET @num=0;DROP TABLE IF EXISTS ddqq;
    CREATE TABLE ddqq AS SELECT *,@num:=@num+1 AS pm1 FROM (
    SELECT * FROM `tmp1` ORDER BY RAND()) a2;SELECT * FROM ddqq a
    WHERE NOT EXISTS(SELECT 1 FROM ddqq b 
    WHERE a.bid=b.bid AND a.pm1<b.pm1)