例如表ss有A,B,C三列,
数据如下:
   A    B    C
1  AA   AA   NULL
2  BB   NULL NULL
3  NULL NULL NULL
4  CC   BB   NULL
5  DD   DD   DD怎样查出A,B,C三列都不为NULL,并且数据相同的记录?
符合要求的为1,2,5行

解决方案 »

  1.   

    select *
    from ss
    where A=B and b=c and a is not null
      

  2.   

    没看清楚,再来:
    select *
    from ss
    where A=ISNULL(B,A) and b=ISNULL(c,a) and a is not null 
      

  3.   

    看不懂给你的需求,很神秘。
    上楼回答,就这些数据而言,sql语句没有问题,
      

  4.   

    这样不够完善,A列也有为NULL的数据,我试了下,有些数据没有查出来,
      

  5.   

    需求就是,找出A,B,C三列为一种数据的,NULL忽略。比如A列数据为aa,那么B,C两列为NULL或者aa,这样就是符合要求的,或者B列为ff,A,C为NULL或ff。以此类推
      

  6.   

    参考楼上的写法,好像可以这样,如下:
    SELECT * FROM ss
     WHERE (A=ISNULL(B,A) and A=ISNULL(C,A))
        OR (B=ISNULL(A,B) and B=ISNULL(C,B))
        OR (C=ISNULL(A,C) and C=ISNULL(B,C)) 
    也不知够不够完善,还有没有更简便或其他的方式
      

  7.   

    SELECT * FROM ss
     WHERE 
     ss.A is not null and ss.B is not null and ss.c is not null
     and
     (
       (ss.A=ISNULL(ss.B,ss.A) or ss.A=ISNULL(ss.C,ss.A))
    OR (ss.B=ISNULL(ss.A,ss.B) or ss.B=ISNULL(ss.C,ss.B))
    OR (ss.C=ISNULL(ss.A,ss.C) or ss.C=ISNULL(ss.B,ss.C)) 
      )