如何排除对称记录
问题描述:
令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
秒一部分?
答
既然你只是你可以使用least
和greatest
下令这两个领域,并使用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)如果两个版本都存在,则记录;如果只存在一个版本,则记录实际记录。
'select * from t where field1
wildplasser
使用'second.field1 first.field2' –