Trong bài viết này chúng ta sẽ cùng tìm hiểu về CROSS JOIN trong MySQL. Xem thêm các bài viết trước đó về các mệnh đề INNER JOIN, LEFT JOIN, RIGHT JOIN, CROSS JOIN, SELF JOIN, FULL OUTER JOIN.
Mệnh đề CROSS JOIN trong MySQL
Mệnh đề CROSS JOIN từ khóa sẽ trả về tất cả các bản ghi từ cả hai bảng (bảng1 và bảng2).
Có thể hiểu đơn giản như sau.
Giả sử bảng 1 đang có n bản ghi, và bảng 2 có m bản ghi. Sử dụng mệnh đề CROSS JOIN để truy vấn dữ liệu từ 2 bảng này kết quả sẽ trả về tất cả là n*m hàng.
Mỗi hàng từ bảng 1 sẽ kết hợp với lần lượt các hàng từ bảng 2 kết hợp thành 1 hàng mới. Như vậy mệnh đề CROSS JOIN kết quả trả về chính là Tích đề các(Descartes) bản ghi từ cả 2 bảng.
Tất nhiên mệnh đề CROSS JOIN cũng cho phép sử dụng WHERE để giới hạn bản ghi.
Cú pháp CROSS JOIN
Cú pháp chung mệnh đề CROSS JOIN như sau:
SELECT column_name(s)
FROM table1
CROSS JOIN table2
Trong đó:
- column_name: tên cột lấy dữ liệu( * nếu lấy tất cả)
- table1: Tên bảng 1
- table2: Tên bảng 2
Nếu cần giới hạn bản ghi có thể kết hợp mệnh đề WHERE như sau. với condition là điều kiện để giới hạn.
SELECT column_name(s)
FROM table1
CROSS JOIN table2
WHERE condition
Ví dụ sử dụng
Mình có 2 bảng là bảng users và bảng comment và có các bản ghi lần lượt như bên dưới.
Bảng users gồm 6 bản ghi.
Bảng comment gồm 4 bản ghi.
Viết mệnh đề CROSS JOIN như sau:
SELECT *
FROM users
CROSS JOIN comment
Như vậy kết quả sẽ trả về tất cả là 6×4 là 24 bản ghi như bên dưới.
Cảm ơn bạn đã theo dõi bài viết.
[XEM TẤT CẢ CÁC BÀI HƯỚNG DẪN MYSQL TẠI ĐÂY]
XEM THÊM Câu lệnh INSERT INTO trong MySQL – Lệnh chèn dữ liệu vào bảng Câu lệnh CREATE TABLE trong MySQL – Lệnh tạo bảng mới Các kiểu dữ liệu trong MySQL (Data Types) – Học MySQL Câu lệnh SELECT trong MySQL – Khi nào thì dùng lệnh SELECT Toán tử so sánh trong MySQL – So sánh bằng, lớn hơn, nhỏ hơn