2017-10-20 15 views
0

j'ai deux tablesMySql supprimer autre table

Tableau 1:

pnr, dmax 
01, 2017-02-02 11:10:00 
02, 2017-05-02 10:10:10 

et Table2:

pnr, type, loc, dt 
01, c3, l2, 2017-02-02 11:10:00 
01, c3, l2, 2017-01-01 09:00:00 
01, c3, l3, 2017-01-01 07:54:30 
02, c5, l1, 2017-02-05 01:10:00 
02, c5, l2, 2017-03-01 19:00:10 
02, c5, l3, 2017-05-02 10:10:10 

i à supprimer toutes les lignes de Tableau2 la paire ne se trouve pas au tableau 1 mais je suis coincé avec mes connaissances limitées mysql

quelque chose comme ..... où pnr = pnr ET dmax! = dt

s'il vous plaît aider

+0

Avez-vous essayé une requête? –

Répondre

1
DELETE table2 
FROM table2 
     LEFT JOIN table1 
      ON table1.pnr = table2.pnr AND table1.dmax = table2.dt 
WHERE table1.pnr IS NULL 

L'énoncé ci-dessus utilise une base GAUCHE JOIN. Ceci renvoie NULL dans la table de droite où aucun enregistrement se trouvent dans la gauche et ce sont les documents que nous voulons supprimer si nous ajoutons la IS NULL à la clause where

+0

bien repéré - maintenant modifié – SEarle1986

+0

OK, a ajouté une explication de base – SEarle1986

+0

Merci monsieur pour votre aide rapide. C'est du travail comme je l'espérais – Peca

0

Vous auriez besoin: DELETE FROM table2 WHERE NOT EXISTS (SELECT a.pnr, a.dmax FROM table1 a WHERE a.pnr = table2.pnr AND a.dmax = table2.dt)

+0

Salut, merci pour votre aide. Après tout, pour être sûr, j'ai écrit un programme PHP pour réaliser la logique nécessaire (PHP fait partie du programme principal) mais je voulais passer l'écriture PHP. Votre requête supprime bien plus de lignes que prévu. Réponse ci-dessous par @ SEarle1986 fonctionnant exactement avec le même résultat que PHP. En tout cas, merci encore pour votre aide – Peca