You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求MySQL查询语句:筛选两表中完全非重复的字段值

解决方案:筛选两张表中仅单侧存在的值

问题说明

现有两张表:

  • 表1(table1)包含字段 ColumnA
  • 表2(table2)包含字段 ColumnB

原始数据:

ColumnAColumnB
appleapple
kiwix
bananay
berryz

需求:排除同时存在于ColumnA和ColumnB中的值(比如apple),仅保留只在其中一个字段出现的值,预期结果:

value
kiwi
banana
berry
x
y
z

实现查询

方法1:使用NOT IN + UNION ALL

-- 选取表1中独有的值
SELECT ColumnA AS value
FROM table1
WHERE ColumnA NOT IN (SELECT ColumnB FROM table2)

UNION ALL

-- 选取表2中独有的值
SELECT ColumnB AS value
FROM table2
WHERE ColumnB NOT IN (SELECT ColumnA FROM table1);

方法2:使用NOT EXISTS + UNION ALL(性能更优)

当数据量较大时,NOT EXISTS的执行效率通常比NOT IN更高:

SELECT ColumnA AS value
FROM table1 t1
WHERE NOT EXISTS (SELECT 1 FROM table2 t2 WHERE t2.ColumnB = t1.ColumnA)

UNION ALL

SELECT ColumnB AS value
FROM table2 t2
WHERE NOT EXISTS (SELECT 1 FROM table1 t1 WHERE t1.ColumnA = t2.ColumnB);

逻辑说明

  • UNION ALL用于合并两个独立查询的结果,不会自动去重(两个查询的结果无重叠,无需去重)
  • 第一个查询筛选出仅在table1.ColumnA中存在、但在table2.ColumnB中不存在的值
  • 第二个查询筛选出仅在table2.ColumnB中存在、但在table1.ColumnA中不存在的值
  • 最终结果完全排除了在两个字段中都出现的重复值,符合需求

内容的提问来源于stack exchange,提问作者waleed hassan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 22:05:25