Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle SQL :comment trouver juste un enregistrement d'un groupe

Utiliser l'agrégation :

select foreignKey, min(primaryKey)
from t
group by foreignKey;

Si vous voulez une valeur aléatoire, vous pouvez utiliser le keep syntaxe :

select foreignKey,
       min(primaryKey) keep (dense_rank first order by dbms_random.random)
from t
group by foreignKey;

Et si vous aviez plusieurs colonnes, vous pourriez utiliser row_number() ou une sous-requête corrélée :

select t.*
from t
where t.primarykey = (select min(t2.primarykey) from t t2 where t2.foreignkey = t.foreignkey);