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 列 name1
和 name2
用于存储关系。比如下面的数据:
name1 | name2
Jack | Henry
Henry | Jack
Paul | Revere
会变成:
name1 | name2
Henry | Jack
Paul | Revere
我有一个包含 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 列 name1
和 name2
用于存储关系。比如下面的数据:
name1 | name2
Jack | Henry
Henry | Jack
Paul | Revere
会变成:
name1 | name2
Henry | Jack
Paul | Revere