J'ai la table A avec les valeurs suivantes:
+ ------ + ------ + | ID1 | ID2 | + ------ + ------ + | 1689 | 1709 | | 1709 | 1689 | | 1782 | 1709 | | 1911 | 1247 | | 1247 | 1468 | | 1641 | 1468 | | 1316 | 1304 | | 1501 | 1934 | | 1934 | 1501 | | 1025 | 1101 | + ------ + ------ +
et une autre relation (tableau B) avec les valeurs suivantes:
+ ------ + ------ + | ID1 | ID2 | + ------ + ------ + | 1641 | 1468 | | 1911 | 1247 | + ------ + ------ +
Je voudrais supprimer toutes les lignes de la table A qui apparaissent dans la table B (une correspondance exacte sur ID1 et ID2). Cela semble simple en théorie mais je n’ai aucune joie avec la déclaration EXISTS ou d’autres approches. J'utilise SQLite.
Toutes les suggestions grandement appréciées.
Que diriez-vous de: (pas trop sûr si cela fonctionne dans SQLite)
DELETE FROM TableA
WHERE EXISTS (SELECT *
FROM TableB
WHERE TableB.ID1 = TableA.ID1
AND TableB.ID2 = TableA.ID2)
Dans MSSQL, vous pouvez faire ceci: (le plus efficace)
SUPPRIMER a DE a JOIN b ON a.ID1 = b.ID1 ET a.ID2 = b.ID2
La suppression à l'aide deEXISTEdans MS-SQL peut être réalisée comme suit:
DELETE TableA FROM TableA
WHERE EXISTS (SELECT *
FROM TableB
WHERE TableB.ID1 = TableA.ID1
AND TableB.ID2 = TableA.ID2)
Je suppose seulement que cela fonctionnerait également en sqlite