一个张表里面包含有两个字段 ID1 ID2 这两个ID在同一条数据里面是不可能一样的 但是在多条数据里面 ID1 数据 ID2数据可能是重复过就如:
   ID1   ID2
    1     2   第一条数据
    2     3   第二条数据
    2     4   第三条数据
    1     5   第四条数据
    1     3   第五条数据
现在我要从表里面的数据随机抽取10条数据 
要求10条里面的 ID1  ID2的数据不得重复 可以配合语言程序 一起用  各位大大有什么好意见没?

解决方案 »

  1.   

    重复的标准是什么
    贴建表及插入记录的SQL,及要求结果出来看看
      

  2.   

    mysql> select * from II;
    +------+------+
    | id1  | id2  |
    +------+------+
    |    1 |    2 |
    |    1 |    3 |
    |    2 |    1 |
    |    2 |    4 |
    |    3 |    1 |
    |    4 |    1 |
    |    5 |    5 |
    +------+------+
    7 rows in set (0.00 sec)mysql> select * from (
        -> select  *   from II
        -> group by id1) aa
        -> group by id2;
    +------+------+
    | id1  | id2  |
    +------+------+
    |    2 |    1 |
    |    1 |    2 |
    |    5 |    5 |
    +------+------+
    3 rows in set (0.00 sec)
    是要这样的结果
      

  3.   

    select * from (   
    select * from (
    select * from 一个张表 order by rand()
    ) t
    group by ID1,ID2
    ) u order by rand()
    limit 10
      

  4.   

    mysql> select *from ii;
    +------+------+
    | id1  | id2  |
    +------+------+
    |    1 |    2 |
    |    1 |    3 |
    |    2 |    1 |
    |    2 |    4 |
    |    3 |    1 |
    |    4 |    1 |
    |    5 |    6 |
    |    6 |    7 |
    |    8 |    9 |
    |   11 |   12 |
    |    9 |  123 |
    |  111 |  234 |
    |  111 |  345 |
    +------+------+
    13 rows in set (0.00 sec)mysql> select * from ii
        -> where id2 not in
        -> (
        -> select id1 from ii
        -> )
        -> group by id1
        -> order by rand() limit 10;
    +------+------+
    | id1  | id2  |
    +------+------+
    |    9 |  123 |
    |   11 |   12 |
    |  111 |  234 |
    |    6 |    7 |
    +------+------+
    4 rows in set (0.00 sec)这样?会漏掉一些数据,要是你数据大的话,而且也只是随即抽取10条,应该也没事;
      

  5.   

    select a.* from tt a left join tt b on a.id1=b.id2 and a.id2=b.id1 where b.id is null
    order by rand() limit 10;
      

  6.   


    可否贴点,测试的insert sql语句呢?
      

  7.   

    select a.* from tt a left join tt b on a.id1=b.id2 and a.id2=b.id1 where b.id1 is null
    order by rand() limit 10;