SQL: comment limiter une jointure sur la premier ligne?

Comment faire une jointure entre deux tables, mais en limitant à la première ligne qui répond à la condition de jointure ?

Dans cet exemple simple, je voudrais obtenir pour chaque ligne table_A la première ligne de table_B qui répond à la condition :

select table_A.id, table_A.name, table_B.city 
from table_A join table_B 
on table_A.id = table_B.id2
where ..

table_A (id, name)
1, John
2, Marc

table_B (id2, city)
1, New York
1, Toronto
2, Boston

The output would be:
1, John, New York
2, Marc, Boston

Peut être Oracle fournit une fonction de ce genre (la performance est un sujet de préoccupation).

sélectionnez * à partir de table_A join (select * feom table_B groupe par id2) b sur table_A.id = b.id2 où ..
Rejoindre une subqery avec la fonction row_number et dans la condition de jointure ajouter et numero_ligne=1
Fournir un exemple de résultat attendu de données(table factice de données) va nous aider dans la compréhension de vos besoins.

OriginalL'auteur kkung | 2016-02-07