Comment faire pour supprimer des lignes dans un Teradata table qui ne sont pas dans une autre table?
Ce qui rend ma situation difficile est que je n'ai pas une seule colonne, avec une simple liste de clés primaires à supprimer (par exemple, "delete from table where clé dans ([liste])"). J'ai plusieurs colonnes comme clé primaire, et auraient besoin de se joindre à eux tous.
À l'aide de ce que je sais des autres bases de données, j'ai pensé que cela pourrait être fait:
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 numéro d'erreur 3706, en disant: "erreur de Syntaxe: les Tables Jointes ne sont pas autorisés dans la clause from."
OriginalL'auteur Paul Hooper | 2010-12-01
Vous devez vous connecter pour publier un commentaire.
Trouvé ce qui est fait par:
OriginalL'auteur Paul Hooper
Un autre moyen est d'utiliser une sous-requête corrélée:
Hooper - La seule façon de le savoir est d'analyser le plan d'exécution et de procéder à des essais. Si Table2 est nettement plus grand et a beaucoup de lignes pour chaque ligne correspondante dans le tableau 1, il est préférable car il peut arrêter le processus de trouver le premier élément.
OriginalL'auteur Thomas