2011-10-27 91 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:什麼問題? –

相關問題