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

SQL:làm thế nào để giới hạn một phép nối trên hàng đầu tiên được tìm thấy?

Từ khóa ở đây là FIRST . Bạn có thể sử dụng hàm phân tích FIRST_VALUE hoặc cấu trúc tổng hợp FIRST .
Đối với FIRST hoặc LAST hiệu suất không bao giờ kém hơn và thường xuyên tốt hơn FIRST_VALUE tương đương hoặc LAST_VALUE cấu trúc bởi vì chúng tôi không có sắp xếp cửa sổ thừa và kết quả là chi phí thực thi thấp hơn:

select table_A.id, table_A.name, firstFromB.city 
from table_A 
join (
    select table_B.id2, max(table_B.city) keep (dense_rank first order by table_B.city) city
    from table_b
    group by table_B.id2
    ) firstFromB on firstFromB.id2 = table_A.id 
where 1=1 /* some conditions here */
;

Kể từ khi 12c giới thiệu toán tử LATERAL , cũng như CROSS/OUTER APPLY tham gia, làm cho nó có thể sử dụng một truy vấn con tương quan ở phía bên phải của JOIN mệnh đề:

select table_A.id, table_A.name, firstFromB.city 
from table_A 
cross apply (
    select max(table_B.city) keep (dense_rank first order by table_B.city) city
    from table_b
    where table_B.id2 = table_A.id 
    ) firstFromB
where 1=1 /* some conditions here */
;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. php:loading trình điều khiển oracle báo lỗi Không thể tải thư viện động - Không thể tìm thấy quy trình đã chỉ định.

  2. truy vấn động trong thủ tục oracle sử dụng con trỏ

  3. đối chiếu sql oracle

  4. Cách hiển thị thông báo lỗi plsql với hành động động

  5. Ngày làm việc tiếp theo (Thứ Hai - Thứ Sáu) trong Oracle?