sql >> Base de Datos >  >> RDS >> Oracle

Oracle SQL:cómo encontrar solo un registro de un grupo

Usar agregación:

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

Si desea un valor aleatorio, puede usar keep sintaxis:

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

Y si tuviera muchas columnas, podría usar row_number() o una subconsulta correlacionada:

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