Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle SQL:So finden Sie nur Datensätze aus einer Gruppe

Aggregation verwenden:

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

Wenn Sie einen zufälligen Wert wünschen, können Sie keep verwenden Syntax:

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

Und wenn Sie viele Spalten hätten, könnten Sie row_number() verwenden oder eine korrelierte Unterabfrage:

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