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

如何将EXCEPT与UNION ALL组合的表差异查询结果存入临时表

插入查询结果到表的实现方案

方案1:提前建表后插入

如果已经提前创建好结构与table1/table2完全一致的目标表(临时表/普通表均可),直接在外层增加INSERT INTO语句即可:

-- 示例:提前创建临时表,字段结构需与table1、table2完全匹配
CREATE TEMP TABLE table_diff (
    id INT,
    content VARCHAR(100),
    create_time DATETIME
    -- 其余字段按需补充,和table1/table2完全对齐
);

-- 插入差异查询结果
INSERT INTO table_diff
(
    SELECT * FROM table1
    EXCEPT
    SELECT * FROM table2
)  
UNION ALL
(
    SELECT * FROM table2
    EXCEPT
    SELECT * FROM table1
);

方案2:一步生成表(CTAS语法)

绝大多数主流数据库支持CREATE TABLE AS SELECT语法,无需提前定义表结构,会自动匹配查询结果的字段类型、字段名,一步完成建表+数据插入:

-- 生成临时表,去掉TEMP关键字即可生成普通持久表
CREATE TEMP TABLE table_diff AS
(
    SELECT * FROM table1
    EXCEPT
    SELECT * FROM table2
)  
UNION ALL
(
    SELECT * FROM table2
    EXCEPT
    SELECT * FROM table1
);

注意事项

  • 必须保证table1和table2的字段数量、字段顺序、对应字段的类型完全一致,否则EXCEPT语法会报错
  • SQL Server环境下临时表命名需加#前缀,写法调整为CREATE TABLE #table_diff AS ...即可
  • 你当前使用的差异查询原生支持NULL值的等值匹配,无需额外调整逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:48:00