พฤติกรรมของ MySQL เมื่อละคีย์เวิร์ด LEFT/RIGHT
หากเขียน JOIN โดยไม่ระบุ LEFT หรือ RIGHT MySQL จะทำงานเป็น INNER JOIN โดยอัตโนมัติ
ข้อมูลทดสอบ
mysql> SELECT * FROM tbl_1;
+----+--------+
| Id | Name |
+----+--------+
| 1 | Gaurav |
| 2 | Rahul |
| 3 | Raman |
| 4 | Aarav |
+----+--------+
mysql> SELECT * FROM tbl_2;
+----+---------+
| Id | Name |
+----+---------+
| A | Aarav |
| B | Mohan |
| C | Jai |
| D | Harshit |
+----+---------+
ทดสอบ RIGHT JOIN
-- มี RIGHT
mysql> SELECT tbl_1.id, tbl_2.id FROM tbl_1 RIGHT JOIN tbl_2 ON tbl_1.name = tbl_2.name;
+------+----+
| id | id |
+------+----+
| 4 | A |
| NULL | B |
| NULL | C |
| NULL | D |
+------+----+
-- ไม่มี RIGHT (กลายเป็น 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 |
+----+----+
ทดสอบ LEFT JOIN
-- มี LEFT
mysql> SELECT tbl_1.id, tbl_2.id FROM tbl_1 LEFT JOIN tbl_2 ON tbl_1.name = tbl_2.name;
+----+------+
| id | id |
+----+------+
| 1 | NULL |
| 2 | NULL |
| 3 | NULL |
| 4 | A |
+----+------+
-- ไม่มี LEFT (กลายเป็น 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 |
+----+----+
สรุป
JOINเพียงอย่างเดียว = INNER JOIN- ต้องระบุ
LEFT JOINหรือRIGHT JOINชัดเจน - INNER JOIN คืนเฉพาะแถวที่จับคู่ได้ทั้งสองฝั่ง