" ORA-00984:这里不允许列"使用select语句插入时

时间:2017-05-02 13:17:01

标签: sql database oracle

我想在表格中插入一些数据。我希望从另一个表中获取一个字段,因此我在内部使用select语句。这是代码:

INSERT INTO t.table1 ( 
  id, 
  id_t2, 
  date_of_change 
) 
VALUES ( 
  t.table1_seq.nextval, 
  SELECT s.id_id_t2 from t.table2 s where s.something='something', 
  TO_DATE('02/05/2017 13:43:34','DD/MM/YYYY HH24:MI:SS') 
)

虽然select语句总是只返回1个字段(1行),但我认为这就是我收到错误的原因。 如何只用1个字段用SELECT语句编写INSERT语句?可以吗?如果没有,是否还有其他解决方案可以解决这个问题?谢谢。

1 个答案:

答案 0 :(得分:2)

您可以将整个insert语句翻译成

形式
insert into table1 (fields)
select fields from table2

这将允许您在select中指定源表中的一些值和一些常量值。生成的查询将是

INSERT INTO t.table1 ( 
  id, 
  id_t2, 
  date_of_change 
) 
SELECT  t.table1_seq.nextval,
        s.id_id_t2,
        TO_DATE('02/05/2017 13:43:34','DD/MM/YYYY HH24:MI:SS') 
FROM    t.table2 s
WHERE   s.something='something'