sql数据库删除重复关系

sql database delete duplicate relationships

我有一个包含 5000 多条记录的简单数据库 table。例如,每条记录表示 'john' 与 'jack' 相关。几乎每个关系都可能在数据库中出现两次,因为可能有一条记录 'jack' 与 'john' 相关,它表示相同的关系。如何识别和删除这些类型的 'duplicate' 记录?

要删除此类记录,您可以使用 exists 逻辑以相反的顺序检查是否存在同一对记录。任意假设您想首先保留字典序最低的名称对,请考虑:

DELETE
FROM yourTable
WHERE EXISTS (SELECT 1 FROM yourTable t2
              WHERE t2.name2 = yourTable.name1 AND
                    t2.name1 = yourTable.name2) AND
      name1 >= name2;

这假设您的 table 有 2 列 name1name2 用于存储关系。比如下面的数据:

name1 | name2
Jack  | Henry
Henry | Jack
Paul  | Revere

会变成:

name1 | name2
Henry | Jack
Paul  | Revere