Teradata插入不存在记录遇3706语法错误,求助解决
解决Teradata中INSERT带WHERE NOT EXISTS的语法报错问题
嗨,我来帮你搞定这个Teradata的SQL报错问题~
你遇到的3706 Syntax error,核心原因是Teradata不支持在INSERT INTO ... VALUES()这种语法后面直接跟WHERE子句。你想要实现的「仅当记录不存在时插入」的逻辑,得换用INSERT INTO ... SELECT ...的写法来实现。
正确的SQL写法
INSERT INTO sample(id, name) SELECT '12', 'rao' WHERE NOT EXISTS (SELECT id FROM sample WHERE id = '12');
为什么这样写能行?
这个写法的逻辑是:
- 用
SELECT '12', 'rao'生成你要插入的单条数据 - 后面的
WHERE NOT EXISTS条件会判断表中是否已经存在id='12'的记录 - 只有当条件成立(目标记录不存在)时,SELECT语句才会返回这条待插入的数据,INSERT操作才会执行;如果记录已存在,SELECT返回空结果,INSERT就不会做任何操作
这样就完美实现了你想要的「不存在才插入」的需求,同时符合Teradata的语法规范啦。
内容的提问来源于stack exchange,提问作者Sharma
相关产品推荐
相关产品推荐

