質問: 以下のテーブルが二つあります。 **SELECT INSEERTを使用して、元のテーブルに他のテーブルのデータを追加したい**のですが、 下記条件の際の記述方法がわかりません。 どうぞよろしくお願いいたします。 **DBはMYSQLです。** **・元のテーブルT_1が15列(列名は仮にA~Oとする) ・追加したいテーブルT_2は2列(列名はP,Qとする)** **・元になるテーブル「T_1」→現在空のテーブル。数列にNOT NULL制約がかかっている。 ・追加したいデータの入ったテーブル「T_2」→列P、Qそれぞれ全てに値が入っており、数は一万件。** **■実現したい結果→元になるテーブル「T_1」の、A,B列に、 ■追加したいデータの入ったテーブル「T_2」のP,Q列を追加して、T_1テーブルを完成させたい。** ↓単純に下記SQL文を書いても、NOT NULL制約により、 他の列の値がDEFAULTで無いと怒られエラーになります(当たり前ですが)。 ``` insert into T_1(A,B) select P,Q from test.T_2 ``` ↓元になるテーブル「T_1」のinsert文として、 ``` insert into tana_mddb.mgoods( C, D,... O) values( name, hoge,... foo) ``` も作ってみて、Google検索では「サブクエリ insert文」など検索して試行錯誤したのですが、 **SQL初心者の為、これ以上記述方法が分からなくて手詰まりです。 ** 有職者の皆様、どうぞ本件についての正しい記述法をご教示いただけないでしょうか。 よろしくお願いいたします。
回答: テーブルT_2のデータを登録する行のテーブルT_1のA,B項目以外の項目でNot Null制約がかかっている項目に対してはどのような値を登録するのが正解でしょうか。 Not Null制約がかかっている項目も含めて`insert select文`を作成してみてはいかがでしょうか。 A,B以外の項目仕様(制約、登録値)が不明なので適当ですが、以下のような感じです。 ``` -- C,DにNot Null制約があり、それぞれ固定値"hoge", "fuga"を初期値として登録したい場合 insert into T_1(A, B, C, D) select P, Q, "hoge", "fuga" from test.T_2 ```