哎呀
好久没来这里啦,分也散得差不多咯。555...今天来提个问题!~有1----10十个数(每次随机抽5个按序排列)表ta里已有选取的记录:tid   aa bb cc dd ee
1     1  3   7  8  9     第一抽取次13789
2     4  6   7  8  10    第二抽取次46789
3     3  5   7  8  9     第三抽取次35789问:如何列出还那些没有出现过的组合啊?
(肯定有很多,如12345,23456等)

解决方案 »

  1.   

    重复一下问题  上面有几个字顺序弄错咯 ^_^哎呀
    好久没来这里啦,分也散得差不多咯。555...今天来提个问题!~有1----10十个数(每次随机抽5个按序排列)表ta里已有选取的记录:tid   aa bb cc dd ee
    1     1  3   7  8  9     第一次抽取13789
    2     4  6   7  8  10    第二次抽取46789
    3     3  5   7  8  9     第三次抽取35789问:如何列出还那些没有出现过的组合啊?
    (肯定有很多,如12345,23456等)
      

  2.   

    表ta的字段就是 tid  aa  bb cc dd ee   均为int型的tid自增太罗嗦了~~嘻~~
      

  3.   

    抽出了的数加起来不在表中.如select ..... from where cast(a as varchar) + cast(b as varchar) + cast(c as varchar) + cast(d as varchar) + cast(e as varchar) no in (select cast(aa as varchar)+cast(bb as varchar)+cast(cc as varchar)+cast(dd as varchar)+cast(ee as varchar) from ta)
      

  4.   

    上面的a,b,c,d,e代表你抽出来的五个数.
      

  5.   

    declare @t1 table(tid int,aa int,bb int,cc int,dd int,ee int)
    insert into @t1 select 1,1,3,7,8,9 
    insert into @t1 select 2,4,6,7,8,10
    insert into @t1 select 3,3,5,7,8,9 declare @t2 table(id int)
    insert into @t2 
          select 1 union select 2 union select 3 union select 4
    union select 5 union select 6 union select 7 union select 8
    union select 9 union select 10select
        n.*
    from
        (select 
             a.id aa,b.id bb,c.id cc,d.id dd,e.id ee
         from 
             @t2 a,@t2 b,@t2 c,@t2 d,@t2 e
         where 
             a.id<b.id and b.id<c.id and c.id<d.id and d.id<e.id) n
    where
        not exists(select 1 from @t1 where aa=n.aa and bb=n.bb and cc=n.cc and dd=n.dd and ee=n.ee)
      

  6.   

    if object_id('pubs..tb') is not null
       drop table tb
    gocreate table tb
    (
    tid int,
    aa  int,
    bb  int,
    cc  int,
    dd  int,
    ee  int
    )insert into tb(tid,aa,bb,cc,dd,ee) values(1,     1,  3,   7,  8,  9)
    insert into tb(tid,aa,bb,cc,dd,ee) values(2,     4,  6,   7,  8,  10    )
    insert into tb(tid,aa,bb,cc,dd,ee) values(3,     3,  5,   7,  8,  9)create table test
    (
    a  int,
    b  int,
    c  int,
    d  int,
    e  int
    )declare @a as int
    declare @b as int
    declare @c as int
    declare @d as int
    declare @e as int
    set @a = 1
    set @b = 1
    set @c = 1
    set @d = 1
    set @e = 1WHILE @a <= 10
    begin
      set @b = 1
      while @b <= 10
      begin
         set @c = 1 
         while @c <= 10
         begin
           set @d = 1
           while @d <= 10
           begin
             set @e = 1
             while @e <= 10
             begin
               insert into test(a,b,c,d,e) values(@a,@b,@c,@d,@e)
               set @e = @e + 1
             end
             set @d = @d + 1
           end 
           set @c = @c + 1
         end
         set @b = @b + 1
      end
      set @a = @a + 1
    endselect * from test where cast(a as varchar) + cast(b as varchar) + cast(c as varchar) + cast(d as varchar) + cast(e as varchar) not in 
    (select cast(aa as varchar) + cast(bb as varchar) + cast(cc as varchar) + cast(dd as varchar) + cast(ee as varchar) from tb)
    drop table tb,test
      

  7.   

    a           b           c           d           e           
    ----------- ----------- ----------- ----------- ----------- 
    1           1           1           1           1
    1           1           1           1           2
    1           1           1           1           3
    1           1           1           1           4
    1           1           1           1           5
    1           1           1           1           6
    1           1           1           1           7
    1           1           1           1           8
    1           1           1           1           9
    1           1           1           1           10
    1           1           1           2           1
    1           1           1           2           2
    1           1           1           2           3
    1           1           1           2           4
    1           1           1           2           5
    1           1           1           2           6
    1           1           1           2           7
    1           1           1           2           8
    1           1           1           2           9
    1           1           1           2           10..........................
    (所影响的行数为 99997 行)
      

  8.   

    按照楼主的要求a,b,c,d,e应该是不重复的5个数字所以修改部分 老乌龟的代码
    WHILE @a <= 6
    begin
      set @b = @a+1
      while @b <= 7
      begin
         set @c = @b+1 
         while @c <=8
         begin
           set @d = @c+1
           while @d <= 9
           begin
             set @e = @d+1
             while @e <= 10
             begin
               insert into test(a,b,c,d,e) values(@a,@b,@c,@d,@e)
               set @e = @e + 1
             end
             set @d = @d + 1
           end 
           set @c = @c + 1
         end
         set @b = @b + 1
      end
      set @a = @a + 1
    end