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

Cú pháp Oracle còn lại kết hợp ba hoặc nhiều bảng

Bạn có thể nhìn thấy nó theo cách xếp tầng. Tuy nhiên, điều quan trọng là tìm kiếm những bảng được nối bên trái và bên phải trong cùng một truy vấn. Trong trường hợp này, thứ tự sẽ khác:điều kiện nơi bảng được nối đúng được áp dụng trước. Tôi hy vọng sơ đồ sau sẽ làm sáng tỏ điều này:

Bạn cũng có thể kiểm tra thứ tự của các phép nối này bằng cách xem kế hoạch thực thi của truy vấn:

Đối với Q1:

select a.c a, b.c b, c.c c   from a, b, c  where a.c = b.c (+)    and
c.c = a.c (+)

------------------------------------------------------------------------
| Id  | Operation           | Name | E-Rows |  OMem |  1Mem | Used-Mem |
------------------------------------------------------------------------
|   0 | SELECT STATEMENT    |      |        |       |       |          |
|*  1 |  HASH JOIN OUTER    |      |      4 |  2168K|  2168K|  805K (0)|
|*  2 |   HASH JOIN OUTER   |      |      4 |  2616K|  2616K|  981K (0)|
|   3 |    TABLE ACCESS FULL| C    |      4 |       |       |          |
|   4 |    TABLE ACCESS FULL| A    |      4 |       |       |          |
|   5 |   TABLE ACCESS FULL | B    |      4 |       |       |          |
------------------------------------------------------------------------

Đối với quý 2:

select a.c a, b.c b, c.c c   from a, b, c  where c.c = a.c (+)    and
a.c = b.c (+)

------------------------------------------------------------------------
| Id  | Operation           | Name | E-Rows |  OMem |  1Mem | Used-Mem |
------------------------------------------------------------------------
|   0 | SELECT STATEMENT    |      |        |       |       |          |
|*  1 |  HASH JOIN OUTER    |      |      4 |  2168K|  2168K|  801K (0)|
|*  2 |   HASH JOIN OUTER   |      |      4 |  2616K|  2616K|  983K (0)|
|   3 |    TABLE ACCESS FULL| C    |      4 |       |       |          |
|   4 |    TABLE ACCESS FULL| A    |      4 |       |       |          |
|   5 |   TABLE ACCESS FULL | B    |      4 |       |       |          |
------------------------------------------------------------------------


  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 cách nào để tìm tổng số ngày đã sử dụng trong một tháng?

  2. Đặt lại trình tự tăng tự động pl-sql

  3. Truy vấn SQL của Oracle - lấy dữ liệu từ tuần trước (Thứ Hai-Thứ Bảy)

  4. Mức lương tối đa thứ n trong Oracle

  5. sai số hoặc loại đối số trong lệnh gọi đến P_AA