Tìm hiểu CROSS JOIN trong MySQL - Học MySQL cơ bản

Cross join trong mysql

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 JOINRIGHT JOINCROSS JOINSELF 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 bảng2).

Tìm hiểu CROSS JOIN trong MySQL - Học MySQL cơ bản
Hình minh họa CROSS JOIN

Có thể hiểu đơn giản như sau.

Giả sử bảng 1 đang có n bản ghi, và bảng 2m 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.

Mệnh đề CROSS JOIN trong mysqL

Bảng comment gồm 4 bản ghi.

Mệnh đề CROSS JOIN trong mysqL

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à 6x4 là 24 bản ghi như bên dưới.

Tìm hiểu CROSS JOIN

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