本帖最后由 dengpeng_a 于 2011-05-22 23:01:47 编辑

解决方案 »

  1.   

    create table tX(A1 int,A2 int,A3 int,A4 int)
    insert into tX select 1,2,3,5
    insert into tX select 2,4,5,6
    insert into tX select 1,2,4,6
    insert into tX select 4,6,8,9
    go
    select * from tX where
    case when a1 in(1,2,3,4) then 1 else 0 end +
    case when a2 in(1,2,3,4) then 1 else 0 end +
    case when a3 in(1,2,3,4) then 1 else 0 end +
    case when a4 in(1,2,3,4) then 1 else 0 end
    >=3
    go
    drop table tX
    /*
    A1          A2          A3          A4
    ----------- ----------- ----------- -----------
    1           2           3           5
    1           2           4           6(2 行受影响)*/
      

  2.   

    insert into tX select 1,2,3,5
    insert into tX select 2,4,5,6
    insert into tX select 1,2,4,6
    insert into tX select 4,6,8,9上面这段什么意思,如果我的表中有成千上万条记录呢,你要写上万条insert into tX select 吗???
      

  3.   

    哈哈,我把
    create table tX(A1 int,A2 int,A3 int,A4 int)
    insert into tX select 1,2,3,5
    insert into tX select 2,4,5,6
    insert into tX select 1,2,4,6
    insert into tX select 4,6,8,9
    go

    go
    drop table tX
    两部分去掉,只保留:
    select * from tX where
    case when a1 in(1,2,3,4) then 1 else 0 end +
    case when a2 in(1,2,3,4) then 1 else 0 end +
    case when a3 in(1,2,3,4) then 1 else 0 end +
    case when a4 in(1,2,3,4) then 1 else 0 end
    >=3
    这部分,竟然成功了,二楼真历害呀,结帖给分!非常感谢!
      

  4.   

    最后总结一下,其实只需要:
    select * from tX where
    case when a1 in(1,2,3,4) then 1 else 0 end +
    case when a2 in(1,2,3,4) then 1 else 0 end +
    case when a3 in(1,2,3,4) then 1 else 0 end +
    case when a4 in(1,2,3,4) then 1 else 0 end
    >=3
    这一部分,再把那个tx换成表X就可以解决我的问题了!