Postgresql 当我将记录(A,B)与(B,A)一样处理时,如何删除重复记录
我的表中有列Postgresql 当我将记录(A,B)与(B,A)一样处理时,如何删除重复记录,postgresql,Postgresql,我的表中有列col1,col2(以及其他一些列) 在我的情况下,记录1,2和2,1是相同的,如何使用此重复定义删除此表的重复数据 要仅选择这些行,请使用: select distinct least(col1,col2) as col1, greatest(col1,col2) as col2 from the_table; 要仅选择这些行,请使用: select distinct least(col1,col2) as col1,
col1
,col2
(以及其他一些列)
在我的情况下,记录1,2和2,1是相同的,如何使用此重复定义删除此表的重复数据 要仅选择这些行,请使用:
select distinct
least(col1,col2) as col1,
greatest(col1,col2) as col2
from the_table;
要仅选择这些行,请使用:
select distinct
least(col1,col2) as col1,
greatest(col1,col2) as col2
from the_table;
你可以这样做。这也可以扩展到两列以上。只需在concat中添加列,并使用split_part添加更多列
select split_part(split_k,',',1) as col1 ,split_part(split_k,',',2) as col2 from
(
select distinct string_agg(split,',' order by split) as split_k from
(
select row_number() over () as row_num,unnest(string_to_array(concat(col1,',',col2),',')) as split from new
)t
group by row_num
)k
一把小提琴:你可以这样做。这也可以扩展到两列以上。只需在concat中添加列,并使用split_part添加更多列
select split_part(split_k,',',1) as col1 ,split_part(split_k,',',2) as col2 from
(
select distinct string_agg(split,',' order by split) as split_k from
(
select row_number() over () as row_num,unnest(string_to_array(concat(col1,',',col2),',')) as split from new
)t
group by row_num
)k
这是一个难题:您是要物理删除这些行,还是只删除SELECT语句?如果要
删除它们:该表中是否有唯一的列?只需SELECT语句。是要物理删除这些行,还是只需SELECT语句?如果您想删除它们:该表中是否有唯一的列?只需选择语句即可。