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

MySQL ทำงานอย่างไรเมื่อไม่ระบุ LEFT/RIGHT ใน JOIN

พฤติกรรมของ 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 คืนเฉพาะแถวที่จับคู่ได้ทั้งสองฝั่ง