2008/04/03

[ORACLE]SELECTしてINSERT

今日初めてSELECT-INSERT文を使いました。

あるTABLEから一定量のデータを登録したい場合、本来ならば、

--1回目のINSERT文
INSERT INTO hoge(column) VALUES(data1);
--2回目のINSERT文
INSERT INTO hoge(column) VALUES(data2);
--3回目のINSERT文
INSERT INTO hoge(column) VALUES(data3);



--n回目
INSERT INTO hoge(column) VALUES(datan);
COMMIT;

と書かなくちゃーいけなくて、これだと、ものすごく手間がかかってしまいます(ノ◇≦。)

そこで、SELECTしたデータをINSERTすることによって何回も書く手間を省くことができます。

INSERT INTO hoge(column) VALUES(
  SELECT data
    FROM hoge2
);

INSERT INTO hoge(column)
  SELECT data
    FROM hoge2
;
COMMIT;

さらに上の方法を用いて、特定のカラムに定数を登録したい場合。

INSERT INTO hoge(column1,column2) VALUES(
  SELECT data
         , 'Constant_Value' --定数
    FROM hoge2
);

INSERT INTO hoge(column1,column2)
  SELECT data
         , 'Constant_Value' --定数
    FROM hoge2
;
COMMIT;

と書くことによって、定数(上の場合、column2に定数Constant_Valueが登録)を登録することができますヾ(=^▽^=)ノ

2 件のコメント:

  1. あれ?これってVALUESとかって
    必要だっけ……?

    INSERT INTO EMP_TARGET
    SELECT * FROM EMP_ORG;

    こんな感じで直にかけたような
    気がしたんだけど……

    最近まったくSQL触ってないから記憶が風化していく一方です。

    返信削除
  2. >あれ?これってVALUESとかって
    >必要だっけ……?

    必要ないっす(/□≦、)
    しょーもないところでバグがでちゃったね。

    直したよ~~~(o^∇^o)ノ

    返信削除