2016-07-20 64 views
0

我需要刪除重複的行向SQL - 刪除重複的行表

我有這個表 -

source 結果,我需要 -

result

*保持只有一列2列組合(順序不重要)

謝謝! (:

+3

你正在使用哪個數據庫?每種方法都有不同的方法... – sgeddes

+0

如果列是相關/相似的,請考慮標準化表格。您可以創建另一個表,每列有一條記錄,並通過外鍵鏈接到此主表。然後你可以「GROUP BY FK_Col,Value」或者簡單地使用「DISTINCT FK_Col,Value」。 –

回答

3

這裏有一個方法應該是有效的:

select col1, col2 
from t 
where col1 <= col2 
union all 
select col1, col2 
from t 
where col1 > col2 and 
     not exists (select 1 from t t2 where t2.col1 = t.col2 and t2.col2 = t.col1); 

注:這是一個SQL select語句,所以它不會刪除表中行你似乎想從結果查詢時,不修改基礎表

+0

它正在工作!非常感謝! (: –

+0

對不起@戈登我沒有打算選擇其他答案。 –

0

我對規範的解釋「只保留組合的一個2列,[列]順序並不重要」。

SELECT col1, col2 
FROM t 
WHERE col1 <= col2 
UNION 
SELECT col2, col1 
FROM t 
WHERE col1 > col2;