Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

เราจะแยกความแตกต่างระหว่าง MySQL CROSS JOIN และ INNER JOIN ได้อย่างไร


เราสามารถแยกความแตกต่างระหว่าง MySQL CROSS JOIN และ INNER JOIN ได้เฉพาะบนพื้นฐานของ join-predicate เช่นเงื่อนไขที่ระบุ ในขณะที่เขียนแบบสอบถามสำหรับ INNER JOIN เราจำเป็นต้องระบุเงื่อนไข แต่ในทางตรงกันข้าม เราไม่จำเป็นต้องระบุเงื่อนไขในขณะที่เขียนแบบสอบถามสำหรับ CROSS JOIN เพื่อให้เข้าใจ เรากำลังยกตัวอย่างของสองตารางชื่อ tbl_1 และ tbl_2 ซึ่งมีข้อมูลดังต่อไปนี้ -

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)

ตอนนี้ แบบสอบถามสำหรับ INNER JOIN อาจเป็นดังนี้ -

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)

ตอนนี้ หากเราจะเขียนข้อความค้นหาด้านบนโดยไม่ระบุเงื่อนไข ก็จะกลายเป็น CROSS JOIN แบบสอบถามที่ไม่มีเงื่อนไขมีดังนี้ -

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)