所以我有一个包含链接关系的表。Field1是and ID,Filed2是ID,到目前为止我已经消除了重复的字段1\字段2组合。然而,我仍然有相反的情况发生。这意味着对于同一记录,在Field1中出现Field2和Field2时,会出现Field1。我在inner join中尝试了一个子查询,但它返回到很多行。提前感谢!
select a.field1, a.field2 from linktable
inner join (select field1, field2 from linktable) b on a.field1=b.field2 and a.field2=b.field1;示例数据:
insert into linktable(field1, field2) values ('ABC', '123');
insert into linktable(field1, field2) values ('123', 'ABC');我想识别并删除出现上述样本数据的情况。
发布于 2019-03-19 10:02:38
像这样的东西应该会让你得到配对:
SELECT a.field1, a.field2
FROM linktable a
JOIN linktable b ON (b.field1 = a.field2 AND b.field2 = a.field1)编辑:查找其中一对的示例:
create table linktable(id number, field1 varchar2(32), field2 varchar2(32));
insert into linktable(id, field1, field2) values (1, 'ABC', '123');
insert into linktable(id, field1, field2) values (2, '123', 'ABC');
SELECT a.field1, a.field2, LEAST(a.id, b.id) AS id_to_delete
FROM linktable a
JOIN linktable b ON (b.field1 = a.field2 AND b.field2 = a.field1);结果:
FIELD1 FIELD2 ID_TO_DELETE
123 ABC 1
ABC 123 1发布于 2019-03-19 09:24:31
这是你想要的吗?
select field1, field2
from (select field1, field2,
row_number() over (partition by least(field1, field2), greatest(field1, field2) order by field1) as seqnum
from t
) t
where seqnum = 1;这将返回一个field1/field2实例,而与排序无关。
发布于 2019-03-19 09:38:59
你应该发布样本数据和预期结果。
我认为这个查询可能对您有效,这样可以防止相反的情况发生,因为field1, field2 = (x, y)和(y, x)
SELECT field1, field2
FROM linktable
WHERE field1 >= field2;https://stackoverflow.com/questions/55232357
复制相似问题