0
votes

SQL Rejoignez des colonnes de deux tables sur une clé unique

Supposons que j'ai deux tables, A et B, tous deux avec une clé unique comme suit (il y a bien sûr plus de lignes et de colonnes dans la table vraie):

select 
    [A], [C]
from 
    tableA r with (nolock) join tableB l with (nolock) on r.Unique_Key = 
l.Unique_Key


2 commentaires

Le jeu de données fourni n'a aucune dupliquée unique_key. Si vous obtenez des clés DUP, cela signifie que les tables ont dupliqué unique_keys. Sinon, il n'y a rien de mal avec votre requête. Établissez les doublons et utilisez la jointure, il devrait courir bien.


@Sanmu. . . Fournissez des données d'échantillonnage appropriées qui produisent des résultats en double et soyez clairs sur les résultats que vous voulez vraiment dans ce cas.


4 Réponses :


0
votes

Vous pouvez utiliser le groupe par l'agrégation

select 
    r.Unique_Key,max([A]), max([C])
from 
    tableA r join tableB l on r.Unique_Key = 
l.Unique_Key
group by r.Unique_Key


0 commentaires

0
votes

Si unique_key est vraiment unique dans chaque table, cela fera ce que vous voulez sans produire des doublons: xxx

Si vous obtenez des duplicats, votre clé est Pas unique. Vous pouvez identifier les clés avec des doublons en exécutant: xxx

et: xxx

basé sur votre choix de noms, vous probablement besoin de corriger les données sous-jacentes.


0 commentaires

0
votes

ni tabla.a code> ni tableb.c code> est unique, ou donc je comprends cela.

avec p>

select distinct tablea.a, tableb.c
from tablea 
join tableb on tablea.unique_key = tableb.unique_key;


0 commentaires

1
votes

Vous pouvez utiliser la commande de jointure qui fonctionne bien dans ce cas.

SELECT A.Unique_Key, A.Atable_Column1, A.Atable_Column2, B.Btable_Column3, B.Btable_Column4 
From Table1 A  inner join Table2 B
 on A.Unique_Key = B.Unique_Key


0 commentaires