Ce qui rend ma situation difficile, c'est que je n'ai pas une seule clé de colonne, avec une simple liste de clés primaires à supprimer (par exemple, "supprimer de la table où entrer ([liste])"). J'ai plusieurs colonnes ensemble comme clé primaire et je devrais me joindre à chacune d'entre elles.Comment supprimer des lignes d'une table Teradata qui ne se trouvent pas dans une autre table?
En utilisant ce que je connais d'autres bases de données, je pensais que cela pourrait se faire comme:
DELETE FROM
table1 t1
LEFT OUTER JOIN
table2 t2
ON
t2.key1 = t1.key1 AND
t2.key2 = t1.key2
WHERE
t2.key1 IS NULL;
Mais Teradata (v12) répond avec le numéro d'erreur 3706, en disant « Erreur de syntaxe: les tables jointes ne sont pas autorisés dans FROM clause."
Est-ce que cette offre tout avantage de performance sur la réponse que je fournis? –
@Paul Hooper - La seule façon de savoir avec certitude est d'analyser le plan d'exécution et de faire quelques tests. Si Table2 est significativement plus grande et comporte plusieurs lignes pour chaque ligne correspondante de Table1, elle peut être plus performante car elle peut arrêter le processus de recherche du premier élément. – Thomas