oracle de trouver la différence entre les 2 tables
J'ai 2 tables qui sont de la même structure. L'un est un temp de l'un et de l'autre est une prod un. L'ensemble des données est chargé à chaque fois et parfois ce jeu de données sera supprimé des enregistrements à partir de l'avant de bases de données. Je charge le jeu de données dans la table temporaire de premier et si des enregistrements ont été supprimés, je veux supprimés de la prod de table aussi.
Alors, comment puis-je trouver les enregistrements qui existent en prod, mais pas dans le temp? J'ai essayé de jointure externe mais il ne semble pas fonctionner. C'est le retour de tous les enregistrements de la table dans le à gauche ou à droite selon le faire à gauche ou à droite de la jointure externe.
Je puis tiens également à supprimer les enregistrements dans la prod de table.
Vous devez vous connecter pour publier un commentaire.
Un autre moyen serait d'utiliser le
MINUS
opérateuraffiche toutes les lignes dans
table1
qui n'ont pas de correspondance exacte danstable2
(vous pouvez évidemment spécifier une petite colonne de la liste si vous vous intéressez seulement à déterminer si une clé existe dans les deux tables).Une autre serait d'utiliser un
NOT EXISTS
MINUS
de commande. J'ai toujours apprendre de nouvelles choses lorsque vous carillon.MINUS
requête dans une sous-requête, par exempleDELETE FROM table1 WHERE some_key IN (<<MINUS query>>)
.delete from foo where id in (select id from table1 minus select id from table2);
Comment au sujet de quelque chose comme:
Ça fonctionne de la même comme un
DELETE
énoncé ainsi:NOT IN
fonctionnera comme n'importe quel autre opérateur.MOINS peut travailler ici
L'énoncé suivant regroupe les résultats avec le MOINS de l'opérateur, qui ne renvoie que les lignes retournées par la première requête, mais pas par la seconde:
Moins ne fonctionnera que si la structure de la table est la même