J'ai 2 tables dans 1 base de données. Dans les 2 tableaux, il y a plusieurs lignes avec le même contenu.
token_aaaa token_bbbb token_cccc token_dddd
Comment supprimer la colonne mytoken2
qui ne se trouve pas dans le mytoken1 code > colonne?
Donc, dans l'exemple ci-dessus, je veux supprimer 4 lignes de données, y compris:
table visitor -------------------------- id | mytoken1 | -------------------------- 1 | token_abcd | 2 | token_efgh | 3 | token_ijkl | 4 | token_mnop | -------------------------- table favorites -------------------------- id | mytoken2 | -------------------------- 1 | token_abcd | 2 | token_efgh | 3 | token_ijkl | 4 | token_mnop | 5 | token_aaaa | 6 | token_bbbb | 7 | token_cccc | 8 | token_dddd | --------------------------
J'ai essayé de trouver une solution jusqu'à ce que j'aie le vertige mais cela n'a pas été résolu, je j'espère que quelqu'un m'aidera ici ..
3 Réponses :
Vous pouvez le faire en utilisant NOT IN
DELETE FROM favorites WHERE token2 NOT IN (SELECT token1 FROM visitor)
Vous pouvez utiliser NOT EXISTS
.
DELETE FROM favorites WHERE NOT EXISTS (SELECT * FROM visitor WHERE visitor.mytoken1 = favorites.mytoken2);
il utilise beaucoup de connexions, mon serveur ne peut pas exécuter le script car il y a des milliers de données dans la colonne
JOIN peut également être utilisé ici:
DELETE favorites.* FROM favorites LEFT JOIN visitor ON visitor.mytoken1 = favorites.mytoken2 WHERE visitor.id IS NULL;
Ici, vous pouvez test de la requête SQL
Il est souvent plus rapide de créer une nouvelle table, en ne conservant que les lignes que vous souhaitez conserver, puis en remplaçant l'ancienne table