当我将记录(A,B)与(B,A)相同时如何删除重复的记录

时间:2019-01-22 10:27:19

标签: postgresql

我的表格中有col1col2列(以及其他一些列)。

col1, col2
1, 2
2, 1
2, 2

在我的情况下,记录1,2和2,1相同,如何使用这种重复定义对表进行重复数据删除?

2 个答案:

答案 0 :(得分:3)

要仅选择这些行,请使用:

select distinct 
         least(col1,col2) as col1, 
         greatest(col1,col2) as col2
from the_table;

答案 1 :(得分:0)

您可以执行以下操作。也可以将其扩展为两列以上。只需在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

为此提琴:https://www.db-fiddle.com/f/rNZN3nuQnc6Dm64JwNtSX3/0