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

Giá trị cao thứ hai từ bảng của Oracle DB

Tôi sẽ sử dụng một hàm cửa sổ:

select *
from (
  select u.*, dense_rank() over (order by balance desc) as rnk
  from users u
) t
where rnk = 2;

Tôi không nghĩ rằng sẽ có sự khác biệt lớn về hiệu suất đối với truy vấn của bạn (đặc biệt là không có chỉ mục trên balance ) nhưng theo ý kiến ​​của tôi thì nó dễ đọc và dễ bảo trì hơn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. KHÔNG VÀO lựa chọn với giá trị NULL

  2. Giá trị nhận dạng không hợp lệ trong truy vấn lồng đôi với ORDER BY và ROWNUM

  3. TNS Listener lỗi

  4. các ràng buộc của trình nạp bị vi phạm khi liên kết lớp javax / xml / namespace / QName từ ứng dụng web trên Oracle 10g

  5. Sự cố với phân số ngày trong Oracle