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

DBeaver中如何将Union查询结果插入指定列的新表?

问题分析与修正方案

你的SQL存在两个核心问题:

  1. 语法格式错误:INSERT语句的正确结构是先指定目标表和列,再通过SELECT获取数据,而非直接把列写在INSERT后。
  2. 表连接方式错误:用逗号直接拼接多个表会生成笛卡尔积(所有表数据的交叉组合),这完全不是你要的合并表数据的效果。

正确SQL写法

直接将UNION ALL合并后的各表指定列数据,作为插入normal表的数据源即可:

INSERT INTO normal (geom, ccn, report_dat, shift, "method", offense, ward, district, latitude, longitude, start_date, end_date)
SELECT geom, ccn, report_dat, shift, "method", offense, ward, district, latitude, longitude, start_date, end_date FROM c
UNION ALL
SELECT geom, ccn, report_dat, shift, "method", offense, ward, district, latitude, longitude, start_date, end_date FROM c2
UNION ALL
SELECT geom, ccn, report_dat, shift, "method", offense, ward, district, latitude, longitude, start_date, end_date FROM c3
UNION ALL
SELECT geom, ccn, report_dat, shift, "method", offense, ward, district, latitude, longitude, start_date, end_date FROM c4
UNION ALL
SELECT geom, ccn, report_dat, shift, "method", offense, ward, district, latitude, longitude, start_date, end_date FROM c5
UNION ALL
SELECT geom, ccn, report_dat, shift, "method", offense, ward, district, latitude, longitude, start_date, end_date FROM c6;

关键说明

  • 若不需要去除各表间的重复数据,用UNION ALL效率更高;如果需要去重,将UNION ALL替换为UNION即可。
  • 确保所有源表的目标列数据类型、顺序,与normal表的对应列完全匹配,否则会插入失败。
  • "method"用双引号是因为它是SQL关键字,保持该写法可避免语法错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 21:01:02