问题描述
我只想在不存在的情况下在表中插入一条记录。
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