我有一个MySQL表看起来删除从MySQL表中的重复数据,如:
(UNIQUE_ID,uid_data1,uid_data2,sorting_data1,sorting_data2)翻过两列
此表中的工具,其中双向关系间没有使用直到现在才支持,所以该表包含看起来像的数据(根据上面的行顺序):
(1,1212,2034,1,1)
(2,2034,1212,1,1)
(3,45667,9876,1,0)
(4,9886,4567,0,1)
该表中也包含 “单定向” 的关系,即
(5,5566,8899,1,9)
=>无行存在(?,8899,5566,9,1)
由于该工具现在支持双向/对称关系,我想从mysql表中删除重复的数据 - 但是我在查找适当的查询时遇到了一些麻烦。
在上述我的例子中我想用的UID 2和4删除行(它们的数据已被存储在所述行1和3
首先,我试图设置一个SELECT-语句看,该条目将被删除。
我想到了一个JOIN查询
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只选择记录“半部分”的观点。
任何如何做到这一点的建议?
P.S.表中的手动删除每个单个记录是不是一种选择,因为表包含几千行;-)
这不会在语法上是准确的,但类似'从tx_sdfilmbase_hilfstab中删除uid_link2(从tx_sdfilmbase_hilfstab中选择uid_link1)'可能会起作用... –
但后来我可能会删除(2233,1122),(5566,1122)=>这两个(2233,1122)和(5566,1122)将被删除,但是, 1122)应该被删除,因为(5566,1122)没有重复输入 – Stefan