【发布时间】:2020-07-15 12:49:14
【问题描述】:
我有以下查询,通常应该可以,但不适用于我的 Navicat 数据库管理软件:
INSERT INTO TABLE1(ID_NO, COLUMN1, COLUMN2, COLUMN3, COLUMN4, COLUMN5, COLUMN6, COLUMN7, COLUMN8, COLUMN9, COLUMN10, COLUMN11, DDATE_IN) VALUES(SELECT ID_NO+1 AS ID_NO FROM ((SELECT MAX( ID_NO ) as ID_NO FROM TABLE GROUP BY ID_NO ORDER BY ID_NO DESC) WHERE ROWNUM = 1), 'Value2', 'Value3', 1, 1, 1, 'Value4', 'Value5', 'Value6', 'Value7', 'Value8', 'Value9', TO_DATE('05.07.2020 10:00:00', 'DD.MM.YYYY HH24:MI:SS'))
SELECT 查询应采用 TABLE1 的现有最高 ID_NO(ID 号)并加 1 并将其写入 INSERT 语句中。因此,ID_NO 必须迭代该表中的每个新 INSERT。
如果我在没有 INSERT 提示的情况下在 Navicat 中将 SELECT 语句编写为单个语句,它可以工作。但我想把它放在 INSERT 提示字符串中。我必须将组合查询放在单个字符串中,因为我使用 C# 代码将 oracle 查询字符串发送到数据库并且仅适用于单个字符串。这里有什么问题?我被卡住了几天,我看不到错误。
编辑:我自己发现了错误。我忘记将 SELECT 语句放入括号中,即放入“()”。我编辑了我的第一篇文章的代码。现在可以了。
【问题讨论】:
标签: sql oracle max sql-insert navicat