在MySQL中,如果你有两张表并希望基于一个唯一字段来找出两张表之间不相交的(多余的)数据,可以使用 LEFT JOIN
来实现。假设两张表分别为 table1
和 table2
,共有字段 unique_field
用于比对,可以使用以下查询语句来获取在 table1
中有但在 table2
中没有的记录,以及在 table2
中有但在 table1
中没有的记录:
-- 从 table1 中获取在 table2 中不存在的记录
SELECT table1.*
FROM table1
LEFT JOIN table2 ON table1.unique_field = table2.unique_field
WHERE table2.unique_field IS NULL;
-- 从 table2 中获取在 table1 中不存在的记录
SELECT table2.*
FROM table2
LEFT JOIN table1 ON table2.unique_field = table1.unique_field
WHERE table1.unique_field IS NULL;
如果你想要将两张表的不相交部分合并为一个结果集,可以使用 UNION
:
SELECT table1.*
FROM table1
LEFT JOIN table2 ON table1.unique_field = table2.unique_field
WHERE table2.unique_field IS NULL
UNION
SELECT table2.*
FROM table2
LEFT JOIN table1 ON table2.unique_field = table1.unique_field
WHERE table1.unique_field IS NULL;
上述查询将返回一个结果集,其中包含 table1
和 table2
不相交的所有记录。