1
votes

Comment supprimer des lignes de table qui ne correspondent pas aux lignes de la deuxième table

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 ..


1 commentaires

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


3 Réponses :


0
votes

Vous pouvez le faire en utilisant NOT IN

DELETE FROM favorites
WHERE token2 NOT IN (SELECT token1 FROM visitor)


0 commentaires

0
votes

Vous pouvez utiliser NOT EXISTS .

DELETE FROM favorites
            WHERE NOT EXISTS (SELECT *
                                     FROM visitor
                                     WHERE visitor.mytoken1 = favorites.mytoken2);


1 commentaires

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



0
votes

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


0 commentaires