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

Ai đó có thể giúp giải thích lý do tại sao không sử dụng SQL JOIN là một cách thực hành không tốt và sai không?

Đúng là cả hai dạng cú pháp sẽ cho cùng một kết quả và nội bộ MySQL thực thi chúng theo cùng một cách chính xác. Các phiên bản hiện tại của tiêu chuẩn SQL hỗ trợ cả hai dạng, mặc dù kiểu dấu phẩy chỉ được hỗ trợ vì lợi ích tương thích ngược.

Có một trường hợp khi sử dụng cú pháp kiểu dấu phẩy không thành công, nhưng thật kỳ lạ:

SELECT * FROM A, B JOIN C ON C.x = A.y;

JOIN toán tử có mức độ ưu tiên cao hơn dấu phẩy. Vì vậy, như truy vấn ở trên đang cố gắng đánh giá C.x = A.y nó thậm chí không biết rằng A là một phần của truy vấn. Vì vậy, bạn gặp lỗi:

ERROR 1054 (42S22): Unknown column 'A.y' in 'on clause'

Cách khắc phục tốt nhất là sử dụng JOIN cú pháp nhất quán thay vì trộn chúng.

Ngoài ra, bạn không thể thực hiện các phép nối bên ngoài bằng cú pháp phép nối dấu phẩy. Oracle và Sybase / Microsoft đều đã phát minh ra cú pháp độc quyền của riêng họ để xử lý các phép nối bên ngoài, nhưng cả hai đều không được các thương hiệu RDBMS khác hỗ trợ. Ngày nay, tất cả các phiên bản hiện tại của RDBMS bao gồm Oracle và Sybase / Microsoft đều hỗ trợ tiêu chuẩn JOIN cú pháp, vì vậy không có lý do chính đáng để sử dụng các tiện ích mở rộng dành riêng cho nhà cung cấp kế thừa.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. COUNT (id) so với COUNT (*) trong MySQL

  2. Làm thế nào để tôi tìm được mức lương lớn thứ hai từ bảng nhân viên?

  3. MySql - HAVING so với WHERE

  4. Sử dụng hợp lý các lớp trong các lớp khác trong php?

  5. Giới hạn kích thước VARCHAR của MySQL