在MySQL中对比两张表的username字段并查询不匹配项
对比两张表username字段的不匹配记录查询方案
方法一:通过JOIN覆盖所有不匹配场景
这个查询会返回三类不匹配记录:两张表同ID但username不一致的记录、仅在t1存在的记录、仅在t2存在的记录,可精准得到你需要的目标结果:
-- 同ID但username不同的记录 SELECT t1.id, t1.username FROM t1 INNER JOIN t2 ON t1.id = t2.id WHERE t1.username <> t2.username UNION ALL -- 仅在t2存在的记录 SELECT t2.id, t2.username FROM t2 LEFT JOIN t1 ON t2.id = t1.id WHERE t1.id IS NULL UNION ALL -- 仅在t1存在的记录 SELECT t1.id, t1.username FROM t1 LEFT JOIN t2 ON t1.id = t2.id WHERE t2.id IS NULL;
方法二:联合分组筛选唯一存在的记录
将两张表数据合并后,筛选出合并结果中仅出现一次的记录(即不同表同ID不同名、或仅单表存在的记录):
SELECT id, username FROM ( SELECT id, username FROM t1 UNION ALL SELECT id, username FROM t2 ) AS combined_data GROUP BY id, username HAVING COUNT(*) = 1;
内容的提问来源于stack exchange,提问作者Kimhab
相关产品推荐
相关产品推荐

