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

làm thế nào để chỉ chọn hàng có trình tự tối đa mà không sử dụng truy vấn con?

Giả sử SQL-Server (> =2005) hoặc Oracle (10g?):

WITH CTE AS
( 
   SELECT
       ROW_NUMBER() OVER (PARTITION BY ID  ORDER BY Seq DESC) AS RN
       , ID, Age
   FROM 
       Persons
)
SELECT ID, Age 
FROM CTE
WHERE RN = 1

ROW_NUMBER trả về số thứ tự của một hàng trong một phân vùng của tập kết quả.

Chỉnh sửa :cũng hoạt động trong Oracle như bạn có thể thấy tại đây:http://sqlfiddle.com/#!4/b7e79/2/0



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. danh sách được phân tách bằng dấu phẩy là kết quả của câu lệnh select trong Oracle

  2. Cú pháp kết hợp bên ngoài kiểu cũ Oracle - Tại sao lại định vị dấu (+) ở bên phải của dấu bằng trong phép nối bên ngoài bên trái?

  3. Oracle ORA-01008:không phải tất cả các biến bị ràng buộc Lỗi w / Tham số

  4. Khai báo ngoại lệ do người dùng xác định bằng phương pháp RAISE_APPLICATION_ERROR trong cơ sở dữ liệu Oracle

  5. ORA-00932:kiểu dữ liệu không nhất quán:mong đợi - có CLOB