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

Oracle SQL thứ tự trong các vấn đề truy vấn con!

Cả dcw và Dems đều đã cung cấp các truy vấn thay thế thích hợp. Tôi chỉ muốn đưa ra lời giải thích tại sao truy vấn của bạn không hoạt động như bạn mong đợi.

Nếu bạn có một truy vấn bao gồm ROWNUM và ORDER BY, Oracle áp dụng ROWNUM trước rồi đến ORDER BY. Vì vậy, truy vấn

SELECT *
  FROM emp
 WHERE rownum <= 5
 ORDER BY empno

lấy 5 hàng tùy ý từ EMP bảng và sắp xếp chúng-- gần như chắc chắn không phải như dự định. Nếu bạn muốn lấy "N hàng đầu tiên" bằng ROWNUM, bạn cần phải lồng truy vấn. Truy vấn này

SELECT *
  FROM (SELECT *
          FROM emp
         ORDER BY empno)
 WHERE rownum <= 5

sắp xếp các hàng trong bảng EMP và trả về 5 đầu tiê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. Lỗi khi cập nhật Tham gia

  2. Nhà phát triển SQL Oracle:Không thành công - Kiểm tra không thành công:Bộ điều hợp mạng không thể thiết lập kết nối?

  3. Tham gia băm trong Oracle với ví dụ

  4. 12c Kế hoạch thích ứng trong nhà phát triển SQL

  5. Cập nhật câu lệnh bằng mệnh đề