2011-10-27 57 views
1

我试图编写一个查询,它将返回列1中的字段相同的记录,但至少有一个特定其他栏中的一个区别。返回其中一个字段相同的所有行,但其他字段中至少有一个差异

例如:
我想如果有差异比较列2和4的第1列中的每个值,我需要在两行的所有字段返回。

这组数据
列1 |列2 |栏3 | Column4 | Column5
空气过滤器|形状|轮|彩色|红
空气过滤器|外形|面板
的Nerf酒吧|完成|抛光|资料|不锈钢钢铁
的Nerf酒吧|完成|喷粉|资料|不锈钢
胡德|色|黑色|完成|粉末涂层
胡德|完成|喷粉|彩色|黑色

会沤金塔:
空气过滤器|形状|轮|彩色|红
空气过滤器|外形|面板| NULL |彩色| |黑色NULL
因为在第4列的值不记录

罩之间的匹配|完成|粉末涂层
胡德|完成|喷粉|彩色|黑色
因为在第2列和第4列中的值不记录

之间的匹配,我只能得到每部分返回一个记录。

这里是我已经试过代码:

Select * 
from [My_Table] as a 
where exists(select null from [My_Table] as b 
where a.column1 = b.column1 
and (a.column2 = b.column2 
or a.column3 = b.column3 
or a.column4 = b.column4 
or a.column5 = b.column5)) 

回答

1
SELECT t1.column1, t1.column2, t1.column3, t1.column4, t1.column5 
    FROM My_Table t1 
     INNER JOIN My_Table t2 
      ON t1.column1 = t2.column1 
    WHERE COALESCE(t1.column2,'') <> COALESCE(t2.column2,'') 
     OR COALESCE(t1.column4,'') <> COALESCE(t2.column4,'') 
+0

它的工作原理!我增加了不同,因为它最初返回了我拥有的记录数量的5倍。非常感谢!! – user955289

+0

我有关于更改此查询条件的另一个问题。我应该问这里还是提交另一篇文章? – user955289

+0

@ user955289:什么问题? –

相关问题