Oracleは2枚のテーブルのデータを3枚目のテーブルに挿入し、3枚目のテーブルには存在しません.

1239 ワード

1、先に調べてから差し込むので、insert into table 1()values()は使えません.
     insert into table 1()select*table 2を使用するには、valuesは使用できません.
2、複数のテーブルなので、検索と挿入の際にどのテーブルを指定する必要がありますか?さもなければ、エラーを報告します.指定された列がぼやけています.
3、三枚の表聯検査では、inner joinなどの接続文法を複数回使うことができます.
まとめ:論理的にはSQLとCodeは基本的に一致していますが、SQLの速度はとても速く、具体的にSQLを実現するには非常に強い論理性が必要ですが、多くのcodeを書く手間が省けます.
insert into SPC_RAW 
              (DATA_INDEX,PARAMETER,VALUE,EQP,CHAMBER,UPDATE_TIME) 
              select t2.RUNINDEX ,t2.IndicatorName ,t2.value,t1.EQPID,t1.UNITID, t1.DateTime 
              from RUN_LIST  t1 ,indicator_data  t2
               where not exists 
              (select SPC_RAW.DATA_INDEX,SPC_RAW.PARAMETER,SPC_RAW.VALUE,SPC_RAW.EQP,SPC_RAW.CHAMBER,SPC_RAW.UPDATE_TIME
              from SPC_RAW
               inner join indicator_data on SPC_RAW.DATA_INDEX=indicator_data.RUNINDEX 
              and SPC_RAW.PARAMETER=indicator_data.IndicatorName  
              and SPC_RAW.VALUE=indicator_data.value 
              inner join RUN_LIST on SPC_RAW.EQP=RUN_LIST.EQPID 
              and SPC_RAW.CHAMBER=RUN_LIST.UNITID 
              and SPC_RAW.UPDATE_TIME=RUN_LIST.DateTime );