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

เปรียบเทียบสองตารางหา ID ที่ขาดหายไปด้วย LEFT OUTER JOIN ใน MySQL

ใช้ LEFT OUTER JOIN ร่วมกับ WHERE right_table.id IS NULL เพื่อหา ID ที่อยู่ในตารางซ้ายแต่อยู่ในตารางขวา

ตัวอย่างการใช้งาน

ตารางแรก (First_Table)

mysql> create table First_Table (Id int);
mysql> INSERT INTO First_Table VALUES (1),(2),(3),(4);
+------+
| Id   |
+------+
|    1 |
|    2 |
|    3 |
|    4 |
+------+

ตารางที่สอง (Second_Table)

mysql> create table Second_Table (Id int);
mysql> INSERT INTO Second_Table VALUES (2),(4);
+------+
| Id   |
+------+
|    2 |
|    4 |
+------+

คิวรี่หา ID ที่หายไป

mysql> SELECT First_Table.Id FROM First_Table
    -> LEFT OUTER JOIN Second_Table ON First_Table.Id = Second_Table.Id
    -> WHERE Second_Table.Id IS NULL;

ผลลัพธ์ (ID 1 และ 3 ไม่อยู่ใน Second_Table):

+------+
| Id   |
+------+
|    1 |
|    3 |
+------+

การทำงาน

  1. LEFT JOIN เก็บแถวทั้งหมดจาก First_Table
  2. จับคู่กับ Second_Table โดย Id
  3. แถวที่ไม่มีคู่ใน Second_Table จะมีค่า NULL
  4. WHERE Second_Table.Id IS NULL กรองเฉพาะแถวที่ไม่มีคู่

ประยุกต์ใช้: หาข้อมูล孤儿 (Orphan records), Sync ข้อมูลระหว่างระบบ, Audit