如何排除对称记录

问题描述:

令T是表T(字段1,字段2)用样本数据如何排除对称记录

(1, 2) // first part 
(3, 4) 
(5, 6) 
.... 
(2, 1) // second part 
(4, 3) 
(6, 5) 

如何排除的记录,其中second.field2 = first.field1 and second.field1 = first.field2秒一部分?

+0

'select * from t where field1 wildplasser

+0

使用'second.field1 first.field2' –

既然你只是你可以使用leastgreatest下令这两个领域,并使用distinct操作删除重复:

SELECT DISTINCT LEAST(field1, field2), GREATEST(field1, field2) 
FROM t 

SELECT * 
FROM ztable t 
WHERE field1 <= field2 
OR NOT EXISTS (
    SELECT * FROM ztable x 
    WHERE x.field1 = t.field2 AND x.field2 = t.field1 
    ); 

这将给只有(F1 < = F2)如果两个版本都存在,则记录;如果只存在一个版本,则记录实际记录。