sql >> Databasteknik >  >> RDS >> Oracle

Hur väljer man unika värden från en tabell?

Den här frågan kommer returnera unika status_id, men bara om kombinationen av dessa status_id och vart och ett av de andra fälten också är unika. Du kan välja unika status_id, men du kan inte returnera alla värden i de andra fälten om det finns mer än en kombination för varje status_id.

[redigera]

Om du bara vill ha den första posten för varje status:

select 
  status_id, schedule_id, cassay_id, time_of_day, days, notify_to_addresses, active 
from
  (select 
    row_number() over (partition by status_id order by 1) as number, 
    status_id, schedule_id, cassay_id, time_of_day, days, notify_to_addresses, active 
  FROM ordertest)
where
  number = 1

Istället för row_number , dense_rank och rank används också för olika typer av numrering, men i det här fallet vill du verkligen ha en enda rad, och radnummer räcker.

Inte säker order by är obligatorisk. Om inte kan du utelämna det. Om det är det kan du ange ett dummyvärde eller ange ett specifikt fält som du vill använda som "första raden". Till exempel, snabba upp order by schedule_id för att returnera det lägsta schema_id för varje status_id.



  1. Hur bryter man TCP/IP-anslutningar med keepalive postgreSQL utan att ändra något i registret?

  2. Returnera en lista över e-postmeddelanden som skickats från SQL Server Database Mail (T-SQL)

  3. Hur gör man en "korrekt skiftläge"-formatering av en mysql-kolumn?

  4. Hur man spårar vilka tabeller/vyer/etc beror på en tabell i Oracle