2016-05-18 153 views
0

我是oracle的新手,我有兩個表名「st」和「mt」。「skey」是兩個表的常用列。我想插入數據除「st」中的列名「tes」不等於「NOO」時外,所有「st」的「skey」值都在「mt」中。根據第一個表中的列插入第二個表中的新記錄

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 - 「SQL命令不能正確地結束」

+0

你能提供樣品數據和想要的結果嗎? –

回答

0

如果查詢背後的邏輯是corrrect,你只需要正確的語法:

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') 

,而不是你的條件;但這隻能說知道你的數據是如何。

+0

仍然錯誤SQL錯誤:違反唯一約束(%s。%s) –

+0

非常感謝您。「不在」Worked.Very helpful。 –

相關問題