ショボ短歌会

まずは実行したいddl

insert into tb_A (col_a,col_b,col_c,col_d,col_e,col_f,col_g,col_h)
values ((select col_a from tb_B),col_b,col_c,col_d,col_e,col_f,col_g,col_h)

col_aは複数あります。col_b〜hは値を直接指定でinsertしたいのですが、
エラー: Subquery returns more than 1 row

一件しか返せない?となります。
複数行一括でinsertするにはどうすればいいでしょうか。

質問者からの補足コメント

  • 書き方が悪かったですね。
    values ((select col_a from tb_B),1,1,1,1,1,1,1)みたいな感じ
    col_aはtb_Bで150件ぐらいあります。
    つまりcol_aのみtb_Bから取得し150件insertしたいです。

      補足日時:2015/08/18 21:38

A 回答 (2件)

>values ((select col_a from tb_B),1,1,1,1,1,1,1)みたいな感じ



であれば

insert ignore into tb_A (col_a,col_b,col_c,col_d,col_e,col_f,col_g,col_h)
select col_a,1,1,1,1,1,1 from tb_B;

とします
    • good
    • 0

>col_aは複数あります。


>col_b〜hは値を直接指定でinsertしたい

の意味がわかりませんが・・・

insert ignore into tb_A (col_a,col_b,col_c,col_d,col_e,col_f,col_g,col_h)
select col_a,col_b,col_c,col_d,col_e,col_f,col_g,col_h from tb_B;
じゃない?
(ユニーク属性などとくになければignoreはいらない)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!