日期:2014-05-17  浏览次数:20524 次

查询多列数据只为一种情况
例如表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行

------解决方案--------------------
没看清楚,再来:
select *
from ss
where A=ISNULL(B,A) and b=ISNULL(c,a) and a is not null 
------解决方案--------------------
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)) 
  )