如何在单条SQL追加查询中追加表数据同时新增额外记录
单查询实现批量追加表记录+新增固定单条记录的方法
你之前的写法报错核心是语法不符合Access的SQL规则,正确可运行的语句如下:
INSERT INTO DD_ADG_Decision ( AID, ADGID, DecisionID ) SELECT NAA.AID, tblAdgIEH.fldDgmId AS ADGID, 11 AS DecisionID FROM tblAdgIEH, NAA WHERE NAA.ATypeId=1 UNION ALL SELECT 1, 77, 11;
之前写法的错误点
- 第一版错误写法把
FROM子句错放在UNION之后,SQL语法顺序完全错误,直接触发缺少运算符报错 - 测试用的固定值写的是
1,2,3,和你实际要插入的AID=1、ADGID=77、DecisionID=11的目标值不匹配 - 注意如果是在单个语句里用UNION拼接结果集,第一个SELECT的末尾不能加分号,分号是整条SQL的结束标记,提前加会把后面的UNION部分判定为非法内容
相关说明
- 优先用
UNION ALL而不是UNION:UNION会自动对拼接后的结果做去重校验,你要插入的固定记录是明确指定的,和前面查询出的业务记录不存在重复可能,用UNION ALL执行效率更高 - Access支持直接
SELECT 常量1,常量2,常量3返回单行结果,不需要额外给固定值部分加FROM子句 - 原查询里
FROM tblAdgIEH, NAA没有配置两个表的关联条件,会生成笛卡尔积,也就是两个表的所有记录会交叉组合,如果不是业务上特意需要这个效果,建议补上两表的关联条件,避免插入大量错误重复数据。
内容的提问来源于stack exchange,提问作者MK01111000
相关产品推荐
相关产品推荐

