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

วิธีแยกความแตกต่างระหว่าง MySQL CROSS JOIN และ INNER JOIN

ความแตกต่างอยู่ที่ Join-predicate (เงื่อนไข)

CROSS JOIN และ INNER JOIN แยกกันได้เพียงแค่จาก join-predicate (เงื่อนไขที่ระบุ):

  • INNER JOIN: ต้องระบุเงื่อนไข (ON condition)
  • CROSS JOIN: ไม่ต้องระบุเงื่อนไข

ตัวอย่าง

ตาราง tbl_1 และ tbl_2 เดิม:

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  |
+----+----+

CROSS JOIN (ไม่มีเงื่อนไข - ลบ ON clause ออก):

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  |
... (16 rows total)
+----+----+

คำสั่งเดียวกันแต่ไม่มี ON clause จะกลายเป็น CROSS JOIN ให้ Cartesian product