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

các phép nối tiềm ẩn bên trong - chúng có bằng nhau không?

Tôi sẽ giải quyết câu hỏi liệu những bất bình đẳng đó có luôn luôn thật. Câu trả lời là "không", không có trong SQL. Trong hầu hết các trường hợp, chúng tương đương nhau. Vấn đề nảy sinh với chuyển đổi kiểu ngầm định.

Đặc biệt, nếu a.id là một số và các cột khác là chuỗi, khi đó bạn gặp trường hợp:

1 = '1'        -- true
1 = '1.00'     -- true
'1' = '1.00'   -- false

Bạn có thể xem điều này trên db <> fiddle này. Sẽ rất nhỏ nếu thiết lập điều này bằng cách sử dụng JOIN s, nhưng vì tôi sẽ không viết mã có dấu phẩy trong FROM , tôi sẽ để bài tập đó cho bạn.

Trong thực tế, id được sử dụng cho các phép nối phải cùng loại. Bạn thậm chí không thể khai báo mối quan hệ khóa ngoại nếu chúng không có. Bỏ qua phương pháp hay nhất đó, hai truy vấn không tự động tương đương nhau.

Lưu ý:Điều này sẽ đúng nếu bạn sử dụng đúng, rõ ràng, tiêu chuẩn JOIN cú pháp mà tôi đặc biệt khuyến khích bạn nên tìm hiểu và sử dụng riêng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách kết nối Cơ sở dữ liệu Oracle với dự án Visual Studio C #

  2. XAException trong máy chủ ứng dụng Websphere

  3. Lỗi biên dịch trình kích hoạt SQL PLUS

  4. Cách chuyển đổi hàng thành cột trong bảng Oracle

  5. Mã định danh PLS-00201 'PACKAGENAME.PROCEDURENAME' phải được khai báo