Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak wybrać unikalne wartości z tabeli?

To zapytanie będzie zwracają unikalne status_id's, ale tylko wtedy, gdy kombinacja tych status_id i każdego z pozostałych pól jest również unikalna. Możesz wybrać unikalne identyfikatory status_id, ale nie możesz zwrócić wszystkich wartości innych pól, jeśli istnieje więcej niż jedna kombinacja dla każdego identyfikatora status_id.

[edytuj]

Jeśli chcesz tylko pierwszy rekord dla każdego statusu:

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

Zamiast row_number , dense_rank i rank są również używane do różnych rodzajów numeracji, ale w tym przypadku naprawdę potrzebujesz jednego wiersza, a liczba_wierszy wystarczy.

Nie jestem pewien order by jest obowiązkowe. Jeśli nie, możesz to pominąć. Jeśli tak, możesz podać fikcyjną wartość lub określić konkretne pole, które chcesz użyć jako „pierwszy wiersz”. Na przykład spedyfikuj order by schedule_id aby zwrócić najniższy identyfikator harmonogramu dla każdego identyfikatora statusu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Importowanie z sprawdzania poprawności bazy danych Oracle

  2. Czy substr czy LIKE są szybsze w Oracle?

  3. Powolna migracja do chmury

  4. OracleCommandBuilder.DeriveParameters() zgłasza OracleException:ORA-06564:obiekt nie istnieje ORA-06512:w SYS.DBMS_UTILITY

  5. Procedura usuwania tylko wtedy, gdy baza danych jest wyższa niż sysdate