根据第一个表

时间:2016-05-18 11:09:40

标签: oracle oracle11g oracle10g oracle-sqldeveloper

我是oracle的新手。我有两个名字" st"和" mt"。" skey"是两个表的公共列。我想在" mt"中插入数据。为所有" skey"值" st"除了列名" tes" in" st"不等于' NOO'。

 INSERT INTO SDATA.MT(RECNO,Skey,Date)
 VALUES ((SELECT MAX(RECNO) FROM SDATA.ST)+1,'hari..',sysdate)
 where skey in (select skey from SDATA.ST where tes <> 'NOO')

获取错误报告 - SQL错误:ORA-00933:SQL命令未正确结束 00933. 00000 - &#34; SQL命令未正确结束&#34;

1 个答案:

答案 0 :(得分:0)

如果您的查询背后的逻辑是正确的,您只需要正确的语法:

INSERT INTO SDATA.MT(
                     RECNO,
                     Skey,
                     Date
                    )
    SELECT MAX(RECNO) + 1,
           'hari..',
           SYSDATE
      FROM C_WOMEN_PRD.MOSTATUS
     WHERE skey IN (SELECT skey
                      FROM SDATA.ST
                     WHERE tes <> 'NOO')

您需要VALUES关键字来插入固定值:

INSERT INTO SDATA.MT(
                         RECNO,
                         Skey,
                         Date
                        )
VALUES (1,
        'something',
        sysdate
       );

根据表格中的数据,您可能需要

WHERE skey NOT IN (SELECT skey
                          FROM SDATA.ST
                         WHERE tes = 'NOO')
而不是你的条件;但这只能说知道你的数据是怎样的。