ความแตกต่างอยู่ที่ 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