Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm thế nào chúng ta có thể phân biệt giữa MySQL CROSS JOIN và INNER JOIN?


Chúng ta chỉ có thể phân biệt giữa MySQL CROSS JOIN và INNER JOIN trên cơ sở tham gia vị từ tức là điều kiện được chỉ định. Trong khi viết truy vấn cho INNER JOIN, chúng ta cần chỉ định điều kiện nhưng ngược lại, chúng ta không cần chỉ định điều kiện trong khi viết truy vấn cho CROSS JOIN. Để hiểu nó, chúng tôi đang lấy ví dụ về hai bảng có tên tbl_1 và tbl_2 đang có dữ liệu sau -

mysql> Select * from tbl_1;
+----+--------+
| Id | Name |
+----+--------+
| 1  | Gaurav |
| 2  | Rahul  |
| 3  | Raman  |
| 4  | Aarav  |
+----+--------+
4 rows in set (0.00 sec)

mysql> Select * from tbl_2;
+----+---------+
| Id | Name    |
+----+---------+
| A  | Aarav   |
| B  | Mohan   |
| C  | Jai     |
| D  | Harshit |
+----+---------+
4 rows in set (0.00 sec)

Bây giờ, truy vấn cho INNER JOIN có thể như sau -

mysql> SELECT tbl_1.id,tbl_2.id FROM tbl_1 JOIN tbl_2 ON tbl_1.name = tbl_2.name;
+----+----+
| id | id |
+----+----+
| 4  | A  |
+----+----+
1 row in set (0.00 sec)

Bây giờ, nếu chúng ta viết truy vấn trên mà không chỉ định điều kiện thì nó sẽ trở thành CROSS JOIN. Truy vấn không có điều kiện như sau -

mysql> Select tbl_1.id, tbl_2.id FROM tbl_1 JOIN tbl_2;
+----+----+
| id | id |
+----+----+
| 1  | A  |
| 2  | A  |
| 3  | A  |
| 4  | A  |
| 1  | B  |
| 2  | B  |
| 3  | B  |
| 4  | B  |
| 1  | C  |
| 2  | C  |
| 3  | C  |
| 4  | C  |
| 1  | D  |
| 2  | D  |
| 3  | D  |
| 4  | D  |
+----+----+
16 rows in set (0.00 sec)