การทำ INTERSECTION ด้วย INNER JOIN
ใน MySQL ไม่มีคำสั่ง INTERSECT โดยตรง แต่สามารถทำได้โดยใช้ INNER JOIN บนทุกคอลัมน์ ซึ่งจะคืนค่าเฉพาะแถวที่ตรงกันทั้งหมดระหว่างสองตาราง
ตัวอย่างข้อมูล
ตาราง value1 และ value2 มีโครงสร้างและข้อมูลดังนี้:
mysql> SELECT * FROM value1;
+------+------+
| i | j |
+------+------+
| 1 | 1 |
| 2 | 2 |
+------+------+
mysql> SELECT * FROM value2;
+------+------+
| i | j |
+------+------+
| 1 | 1 |
| 3 | 3 |
+------+------+
คำสั่งสำหรับ INTERSECTION
ใช้ JOIN ... USING(i,j) เพื่อจับคู่ทุกคอลัมน์:
mysql> SELECT * FROM value1 JOIN value2 USING(i,j);
+------+------+
| i | j |
+------+------+
| 1 | 1 |
+------+------+
ผลลัพธ์คือแถวเดียวที่มีค่า (1,1) ซึ่งเป็นข้อมูลที่ซ้ำกันในทั้งสองตาราง
สรุป
- INNER JOIN บนทุกคอลัมน์ = INTERSECTION
- เหมาะสำหรับหาข้อมูลที่ตรงกันทุกฟิลด์ระหว่างตาราง
- ประสิทธิภาพดีกว่าการใช้คำสั่ง INTERSECT ในฐานข้อมูลอื่น