Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm thế nào để chọn các giá trị duy nhất từ ​​một bảng?

Truy vấn này sẽ trả về status_id's duy nhất, nhưng chỉ khi sự kết hợp của status_id đó và từng trường khác cũng là duy nhất. Bạn có thể chọn status_id's duy nhất, nhưng bạn không thể trả về tất cả các giá trị của các trường khác nếu có nhiều hơn một kết hợp cho mỗi status_id.

[sửa]

Nếu bạn chỉ muốn bản ghi đầu tiên cho mỗi trạng thái:

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

Thay vì row_number , dense_rankrank cũng được sử dụng cho các kiểu đánh số khác nhau, nhưng trong trường hợp này, bạn thực sự muốn một hàng duy nhất và row_number là đủ.

Không chắc chắn order by là bắt buộc. Nếu không, bạn có thể bỏ nó ra ngoài. Nếu đúng như vậy, bạn có thể chỉ định một giá trị giả hoặc chỉ định một trường cụ thể mà bạn muốn sử dụng làm 'hàng đầu tiên'. Ví dụ:tăng tốc order by schedule_id để trả về Sched_id thấp nhất cho mỗi status_id.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để kiểm tra cột là ảo trong Oracle?

  2. kiểm tra xem đó có phải là một hàm số trong Oracle không

  3. Thay đổi bảng để sửa đổi giá trị mặc định của cột

  4. Cách tìm dự án con của dự án mẹ được truyền trong mệnh đề 'WHERE' và cũng có thể tìm các đối tượng trùng lặp

  5. Tham gia bên ngoài giúp đỡ trong oracle