2008-11-05 5 views
5

Comment puis-je faire:En SQL, comment supprimer une ligne d'une table si elle n'a pas de ligne correspondante dans une autre table?

SUPPRIMER DE foo WHERE id = 1 ET bar ne contient pas id == 1

Pour élaborer, comment puis-je supprimer une ligne avec id = 1, de la table foo, seulement si il n'y a pas de ligne dans le tableau bar avec id = 1.

+0

Je pense que vous devez donner plus de détails. la barre -> ne contient pas id == 1 ne me semble pas compréhensible. – EvilTeach

+0

La barre est-elle juste une autre colonne ou table? –

Répondre

19
DELETE FROM foo WHERE id=1 AND NOT EXISTS (SELECT * FROM bar WHERE id=1) 

Je suppose que vous voulez dire que foo et bar sont des tables, et que vous souhaitez supprimer un enregistrement de foo si elle n'existe pas dans le bar.

+0

ty exactement cela :) – fmsf

11

en utilisant une jointure:

delete f 
from foo f 
left 
join bar b on 
     f.id = b.id 
where f.id = 1 and 
     b.id is null 
+0

A ma connaissance, seuls SQL Server et MySQL supportent cette syntaxe. –

+0

Correct, c'est pas ansi sql. –

Questions connexes