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

如何从两张包含重复值的表中提取唯一值并生成新表?

解决两张表提取唯一值并生成新表的问题

嘿,你的思路已经对了一半啦!目前的查询只能拿到表1中存在但表2没有的值(也就是示例里的104),但还漏掉了表2中存在但表1没有的105。咱们把这两部分结果合并起来,就能得到你要的表3了。

方案一:基于LEFT JOIN扩展(贴合你现有逻辑)

这种方法在你原查询的基础上,补充表2的独有值,用UNION合并两个结果集:

-- 获取表1独有的值
SELECT `Table 1 data`.col1 
FROM `Table 1 data` 
LEFT JOIN `Table 2 data` ON `Table 1 data`.col1 = `Table 2 data`.col1 
WHERE `Table 2 data`.col1 IS NULL

UNION

-- 获取表2独有的值
SELECT `Table 2 data`.col1 
FROM `Table 2 data` 
LEFT JOIN `Table 1 data` ON `Table 2 data`.col1 = `Table 1 data`.col1 
WHERE `Table 1 data`.col1 IS NULL;

方案二:用NOT EXISTS(逻辑更直观)

如果觉得JOIN的写法有点绕,NOT EXISTS的逻辑更直白——直接筛选出在另一张表中完全不存在的值:

SELECT col1 FROM `Table 1 data`
WHERE NOT EXISTS (
    SELECT 1 FROM `Table 2 data` 
    WHERE `Table 2 data`.col1 = `Table 1 data`.col1
)

UNION

SELECT col1 FROM `Table 2 data`
WHERE NOT EXISTS (
    SELECT 1 FROM `Table 1 data` 
    WHERE `Table 1 data`.col1 = `Table 2 data`.col1
);

直接生成新表3的完整写法

如果要把结果直接插入到新表中,只需在查询前加上INSERT INTO语句:

INSERT INTO `Table 3` (col1)
SELECT col1 FROM `Table 1 data`
WHERE NOT EXISTS (
    SELECT 1 FROM `Table 2 data` 
    WHERE `Table 2 data`.col1 = `Table 1 data`.col1
)

UNION ALL

SELECT col1 FROM `Table 2 data`
WHERE NOT EXISTS (
    SELECT 1 FROM `Table 1 data` 
    WHERE `Table 1 data`.col1 = `Table 2 data`.col1
);

这里用UNION ALL代替UNION,因为两边的结果本身不会有重复,执行效率会更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:38:29