2016-05-18 22 views
0

私はoracleに新しくなりました。 "st"と "mt"というトウテーブルを持っています。 "skey"は2つのテーブルの共通列です。 "st"の列名 "tes"が 'NOO'と等しくない場合を除いて、 "st"のすべての "skey"値に対する "mt"最初のテーブルの列に基づいて2番目のテーブルに新しいレコードを挿入します。

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 - クエリの背後にあるロジックは、あなたcorrrectある場合

+0

サンプルデータと希望の結果を提供できますか? –

答えて

0

"適切に終了していないSQLコマンド"

INSERT INTO SDATA.MT(
         RECNO, 
         Skey, 
         Date 
         ) 
VALUES (1, 
     'something', 
     sysdate 
     ); 
:あなたは固定値を挿入するためにVALUESキーワードが必要

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

:正しい構文のみを必要とします

あなたのテーブルのデータに応じて、多分あなたの代わりにあなたの状態の

WHERE skey NOT IN (SELECT skey 
          FROM SDATA.ST 
         WHERE tes = 'NOO') 

を必要とします。しかし、これはあなたのデータがどのようになっているかを知るということだけができます。

+0

まだエラーSQLエラー:ユニークな制約(%s。%s)が違反しました –

+0

ありがとうございました。 "Not In" Worked.Very helpful。 –

関連する問題