Có thể viết truy vấn tham gia mà không có câu hỏi ON
không? và các tham gia này khác nhau như thế nào LEFT JOIN, RIGHT JOIN
hoạt động.Làm thế nào để sử dụng mysql JOIN mà không có điều kiện ON?
Trả lời
MySQL documentation bao gồm chủ đề này.
Đây là bản tóm tắt. Khi sử dụng join
hoặc inner join
, điều kiện on
là tùy chọn. Điều này khác với tiêu chuẩn ANSI và khác với hầu hết các cơ sở dữ liệu khác. Hiệu ứng là cross join
. Tương tự, bạn có thể sử dụng mệnh đề on
với cross join
, cũng khác với SQL chuẩn.
Tham gia chéo tạo ra một sản phẩm Descartes - nghĩa là, mọi kết hợp có thể có của 1 hàng từ bảng đầu tiên và 1 hàng từ hàng thứ hai. Việc nối chéo cho một bảng với ba hàng ('a', 'b', và 'c') và một bảng có bốn hàng (nói 1, 2, 3, 4) sẽ có 12 hàng.
Trong thực tế, nếu bạn muốn làm một chéo tham gia, sau đó sử dụng cross join
:
from A cross join B
là tốt hơn nhiều so với:
from A, B
và:
from A join B -- with no on clause
Các on
mệnh đề được yêu cầu cho một tham gia bên ngoài bên phải hoặc bên trái, vì vậy cuộc thảo luận không liên quan cho họ.
Nếu bạn cần hiểu các loại kết nối khác nhau, thì bạn cần thực hiện một số nghiên cứu về cơ sở dữ liệu quan hệ. Stackoverflow không phải là một nơi thích hợp cho mức độ thảo luận đó.
Xem một số ví dụ trong http://www.sitepoint.com/understanding-sql-joins-mysql-database/
Bạn có thể sử dụng 'SỬ DỤNG' thay vì 'ON' như trong truy vấn
SELECT * FROM table1 LEFT JOIN table2 USING (id);
Để làm rõ thêm, cột tham gia trong cả hai bảng phải được đặt tên giống nhau để SỬ DỤNG để làm việc – rmirabelle
Bạn cũng có thể muốn điều tra việc sử dụng UNION, kết hợp nhiều bảng cho một đầu ra: SQL - Combine two tables for one output
Làm thế nào mà thậm chí có liên quan đến câu hỏi của OP? –
- 1. mysql delete on join?
- 2. MySQL JOIN với NẾU điều kiện
- 3. Làm thế nào để tạo kết quả truy vấn MYSQL ORDER BY điều kiện đặt hàng?
- 4. CẬP NHẬT MySQL bằng cách sử dụng điều kiện IF
- 5. MySQL & bộ lồng nhau: chậm JOIN (không sử dụng index)
- 6. Làm thế nào để bạn lặp lại qua bộ đệm tròn mà không có điều kiện?
- 7. Điều kiện bên trong JOIN hoặc WHERE
- 8. có điều kiện tham gia vào mysql
- 9. Làm thế nào để có điều kiện xử lý phép chia cho không với MySQL
- 10. SQL JOIN nơi đặt điều kiện WHERE?
- 11. MYSQL JOIN với điều khoản IN
- 12. Hibernate HQL: làm thế nào để sử dụng một trái phức tạp join lấy
- 13. Làm thế nào để sửa chữa một bảng MySQL mà không cần sử dụng phpMyAdmin?
- 14. Cách sử dụng bí danh với MySQL LEFT JOIN
- 15. Điều kiện trong MySQL GROUP_CONCAT
- 16. Làm thế nào để có nhiều điều kiện trong JPQL tham gia
- 17. Doctrine2 LEFT JOIN với 2 điều kiện
- 18. Làm thế nào để sử dụng điểm ngắt có điều kiện trong Eclipse?
- 19. Có điều gì sai với các kết nối không sử dụng từ khóa JOIN trong SQL hoặc MySQL không?
- 20. Làm cách nào để đổi tên() mà không có điều kiện chủng tộc?
- 21. Làm cách nào để sử dụng điều khiển Đăng nhập ASP.NET mà không sử dụng MembershipProvider?
- 22. MySQL Left Join + Min
- 23. SỬ DỤNG Từ khoá vs ON khoản - MYSQL
- 24. sử dụng .join phương pháp để chuyển đổi mảng chuỗi mà không cần dấu phẩy
- 25. Làm thế nào để dừng vô điều kiện một sợi
- 26. làm thế nào để sử dụng LIKE với điều kiện trong sqlite hoặc mysql với lithium recordset
- 27. DELETE sử dụng LEFT JOIN với LIMIT trong MySQL
- 28. Làm thế nào để sử dụng @ Html.EditorFor() mà không có mô hình xem
- 29. Làm thế nào để sử dụng SBCL cung cấp semaphore chống lại điều kiện chủng tộc
- 30. MySQL LEFT THAM GIA Nhiều Điều kiện
Khi mệnh đề 'ON' cho máy chủ biết cách các bảng có liên quan, không. Nếu các loại tham gia khác nhau của bạn đều cho kết quả tương tự, bạn sẽ làm sai điều gì đó và thêm một số mã có thể giúp chúng tôi phát hiện sự cố của bạn. Trong thời gian có nghĩa là đi đến [blog của Jeff Atwood] (http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html) trong phần giới thiệu 2 phút cho các loại tham gia khác nhau. – fvu