Je veux extraire des colonnes dans une table (A) qui ne dispose pas d'une entrée dans le tableau (B). Comment puis-je atteindre cela dans la ruche? Je travaille sur une requête (ci-dessous), mais cela ne fonctionne pas pour le moment, s'il vous plaît aider.
Joindre des colonnes: produit_Programme dans prd_raw_sf.sf_opportunity_dn à sfdc_product_name dans prd_raw_sf.sf_product_pcu_mapping p>
select * FROM prd_raw_sf.sf_opportunity_dn JOIN prd_raw_sf.sf_si_accounts_mapping ON prd_raw_sf.sf_opportunity_dn.account_name = prd_raw_sf.sf_si_accounts_mapping.sfdc_account_name WHERE prd_raw_sf.sf_opportunity_dn.account_name not in (select * from prd_raw_sf.sf_si_accounts_mapping);
3 Réponses :
Je recommande d'utiliser n'existe pas code>. Un
rejoindre code> ne semble pas nécessaire:
select o.*
from prd_raw_sf.sf_opportunity_dn o
where not exists (select 1
from prd_raw_sf.sf_si_accounts_mapping a
where o.account_name = a.account_name
);
Le La requête tente de avec un Les index suivants, cela devrait être une solution efficace: p> Remarque: les alias de table rendent la requête plus courte et plus facile à comprendre. Je les ai ajoutés à votre requête et je vous recommanderais de les utiliser à tout moment. P> p> rejoindre code> AntiPattern vous vient à l'esprit ici:
joindre code> chaque enregistrement dans
sf_opportunity_dn < / code> avec
sf_si_accounts_mapping code>, alors le
où les filtres code> filtres sur uniquement des enregistrements que ne pouvaient pas em> être joints. P>
Vous pouvez utiliser Rejoindre à gauche Approche: P> rejoindre gauche code> et
Joindre Semi rejoindre CODE>
select a.*
FROM prd_raw_sf.sf_opportunity_dn as a
LEFT SEMI JOIN prd_raw_sf.sf_si_accounts_mapping as b
ON a.account_name = b.sfdc_account_name