J'ai une table MySQL qui ressemble à:
(id_unique, uid_data1, uid_data2, sorting_data1, sorting_data2)Supprimer les données en double de la table mysql accross deux colonnes
Ce tableau est utilisé dans un outil, où les relations bidirectionnelles weren « t supporté jusqu'à présent, de sorte que la table contient des données qui ressemble (ordre champ ligne selon ci-dessus):
(1, 1212, 2034, 1, 1)
(2, 2034, 1212, 1, 1)
(3, 4567, 9876, 1, 0)
(4, 9876, 4567, 0, 1)
Le tableau contient également des "single-directed" relations, à savoir
(5, 5566, 8899, 1, 9)
=> aucune ligne existe pour (?, 8899, 5566, 9, 1)
Comme l'outil prend désormais en charge les relations bidirectionnelles/symétriques, je voudrais supprimer les données en double de la table mysql - mais j'ai quelques difficultés à trouver une requête appropriée pour le faire.
Dans l'exemple ci-dessus je voudrais supprimer les lignes avec les uids 2 et 4 (car leurs données sont déjà stockées dans les rangées 1 et 3.
D'abord, j'ai essayé de configurer un SELECT-Statement pour voir, les entrées seraient supprimés.
Je pensais que d'un REJOIGNEZ-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
Cependant, je suis coincé au point où je dois dire MySQL pour ne sélectionner que « partie de la moitié » des dossiers.
Tout suggestions sur la façon de faire cela?
P.S. Suppression de chaque enregistrement unique manuellement dans le tableau ne sont pas une option, comme la table contient plusieurs milliers de lignes ;-)
Cela ne va pas être syntactiquement précis, mais quelque chose comme 'supprimer de tx_sdfilmbase_hilfstab où uid_link2 dans (sélectionnez uid_link1 de tx_sdfilmbase_hilfstab)' pourrait fonctionner ... –
mais alors je pourrais être dele des lignes sans double entrée, comme: (1122, 2233), (2233, 1122), (5566, 1122) => ici les deux (2233, 1122) et (5566, 1122) seraient supprimés, bien que seulement (2233, 1122) devrait être supprimé, car (5566, 1122) n'a pas de double entrée – Stefan