Trong MySQL, viết JOIN
hàm ý không đủ tiêu chuẩn INNER JOIN
. Nói cách khác, INNER
trong INNER JOIN
là tùy chọn. INNER
và CROSS
là các từ đồng nghĩa trong MySQL. Để rõ ràng tôi viết JOIN
hoặc INNER JOIN
nếu tôi có điều kiện tham gia và CROSS JOIN
nếu tôi không có điều kiện.
Cú pháp được phép cho phép nối được mô tả trong tài liệu .
Hiện tại, tôi đang nghĩ một JOIN độc lập không hơn gì (giống hệt) sử dụng dấu phẩy và mệnh đề WHERE.
Hiệu quả là như nhau, nhưng lịch sử đằng sau chúng là khác nhau. Cú pháp dấu phẩy là từ tiêu chuẩn ANSI-89. Tuy nhiên, có một số vấn đề với cú pháp này nên trong tiêu chuẩn ANSI-92, từ khóa JOIN đã được giới thiệu.
Tôi thực sự khuyên bạn nên luôn sử dụng cú pháp JOIN thay vì dấu phẩy.
T1 JOIN T2 ON ...
dễ đọc hơn T1, T2 WHERE ...
.
- Nó dễ bảo trì hơn vì mối quan hệ bảng và bộ lọc được xác định rõ ràng thay vì trộn lẫn với nhau.
- Cú pháp JOIN dễ chuyển đổi thành OUTER JOIN hơn cú pháp dấu phẩy.
- Việc trộn lẫn cú pháp dấu phẩy và JOIN trong cùng một câu lệnh có thể gây ra các lỗi gây tò mò do các quy tắc ưu tiên.
- Ít có khả năng vô tình tạo ra một sản phẩm cartesian khi sử dụng cú pháp JOIN do một mệnh đề nối bị quên, bởi vì các mệnh đề nối được viết bên cạnh các phép nối và rất dễ dàng để xem nếu thiếu một mệnh đề.