如果不退出则插入oracle

问题描述

我只想在不存在的情况下在表中插入一条记录。

INSERT INTO table
(column1,column2,column3,column4,column5,column6)
 SELECT re.column1,re.column2,re.column3,re.column4
  FROM RECEPCION_ELEMENTOS re
 WHERE NOT EXISTS (SELECT 1
                 FROM table re2
                WHERE re.column1 = re2.column1
                  AND re.column2 = re2.column2
                  AND re.column3 = re2.column3
                  AND re.column4 = re2.column4);

在互联网上搜索,我已经建立了此查询,但是它不起作用,我收到此错误

Error SQL: ORA-00947: no hay suficientes valores
00947. 00000 -  "not enough values"

,此查询中缺少“ VALUES”。这是正确的吗?

有帮助吗?

解决方法

您仍然必须使用逻辑(选择6列)。如果在select中使用的列较少,则会引发错误

INSERT INTO table
(column1,column2,column3,column4,column5,column6)
 SELECT re.column1,re.column2,re.column3,re.column4,re.column5,re.column6
  FROM RECEPCION_ELEMENTOS re
 WHERE NOT EXISTS (SELECT 1
                 FROM table re2
        WHERE re.column1 = re2.column1
         AND re.column2 = re2.column2
         AND re.column3 = re2.column3
         AND re.column4 = re2.column4);

查看演示-https://dbfiddle.uk/?rdbms=oracle_11.2&fiddle=ec9b36db802c7e2691b53edc994cbbb6

另一件事,希望您实际上没有使用“表”作为表名(这是一个保留关键字),因此建议您使用其他名称。在我的演示中,我改用“ Tab”。

,

对我来说,存在逻辑实际上看起来非常有效。问题是您的插入指定6个目标列,但是您的选择仅提供4列。您可能打算在其中执行以下操作之一:

INSERT INTO table (column1,column6)
SELECT re.column1,re.column6
FROM RECEPCION_ELEMENTOS re

INSERT INTO table (column1,column4)
SELECT re.column1,re.column4
FROM RECEPCION_ELEMENTOS re

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...