我有一个 MySQL 表,它看起来像:
(unique_id,uid_data1,uid_data2,sorting_data1,sorting_data2)
该表用于工具中,直到现在才支持双向关系,因此该表包含的数据看起来像(根据上面的行的字段顺序):
(1, 1212, 2034, 1, 1)
(2, 2034, 1212, 1, 1)
(3, 4567, 9876, 1, 0)
(4, 9876, 4567, 0, 1)
该表还包含“单向”关系,即
(5, 5566, 8899, 1, 9)
=> (?, 8899, 5566, 9, 1) 不存在行
由于该工具现在支持双向/对称关系,我想从 mysql 表中删除重复数据 - 但是我在找到合适的查询来执行此操作时遇到了一些麻烦。
在上面的示例中,我想删除 uid 为 2 和 4 的行(因为它们的数据已经存储在第 1 行和第 3 行中。
首先,我尝试设置一个 SELECT-Statement 来查看哪些条目将被删除。
我想到了一个 JOIN-Query
SELECT x.uid, x.uid_link1, x.uid_link2, y.uid_link1 as 'uid_link2', y.uid_link2 as 'uid_link1'
FROM tx_sdfilmbase_hilfstab x
INNER JOIN tx_sdfilmbase_hilfstab y ON x.uid_link1=y.uid_link2 AND x.uid_link2=y.uid_link1
WHERE ???
ORDER BY x.uid_link1, x.uid_link2
但是我被困在我必须告诉 MySQL 只选择记录的“一半”的地步。
关于如何做到这一点的任何建议?
PS 在表中手动删除每条记录不是一种选择,因为该表包含数千行;-)