Kỹ thuật: UNION của hai Exclusion Join
Để lấy các hàng chỉ tồn tại ở một trong hai bảng (không giao nhau):
SELECT * FROM table1 LEFT JOIN table2 USING(cols) WHERE table2.col IS NULL UNION SELECT * FROM table2 LEFT JOIN table1 USING(cols) WHERE table1.col IS NULL;
Ví dụ
Hai bảng value1, value2:
mysql> SELECT * FROM value1; +-----+-----+ | i | j | +-----+-----+ | 1 | 1 | | 2 | 2 | +-----+-----+ mysql> SELECT * FROM value2; +------+------+ | i | j | +------+------+ | 1 | 1 | | 3 | 3 | +------+------+
Tìm DIFFERENCE:
mysql> SELECT * FROM value1 LEFT JOIN value2 USING(i,j) WHERE value2.i IS NULL
UNION
SELECT * FROM value2 LEFT JOIN value1 USING(i,j) WHERE value1.i IS NULL;
+------+-----+
| i | j |
+------+-----+
| 2 | 2 |
| 3 | 3 |
+------+-----+
Kết quả: (2,2) chỉ có ở value1, (3,3) chỉ có ở value2.