sql >> Database teknologi >  >> RDS >> Oracle

Oracle SQL:hvordan man finder bare optagelse fra en gruppe

Brug aggregering:

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

Hvis du vil have en tilfældig værdi, kan du bruge keep syntaks:

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

Og hvis du havde mange kolonner, kunne du bruge row_number() eller en korreleret underforespørgsel:

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



  1. SQL Server Management Studio 2008 Runas bruger på andet domæne over VPN

  2. Oracle SQL-dato til lang og omvendt

  3. Hvordan indstiller man én FK (fremmednøgle) på flere borde?

  4. Oprettelse af en trigger med en sagserklæring