MySQLのSQL文法は知らないので、それらしいSQLで話を進めます。 摘便、MySQLのSQL文法に置き換えてね。 まず、tbl_data1.1_id はただの連番かな? であれば、auto number属性を付けましょう。 その上で、tbl_data2にあって、tbl_data1にないレコードを追加したいのかな? INSERT INTO だと重複レコードの追加はエラーになるので、省かれるようなSQLを 書きます。 INSERT INTO tbl_data1 SELECT * FROM tbl_data2 LEFT JOIN tbl_data1 ON tbl_data2.setubi_id2 = tbl_data1.setubi_id WHERE tbl_data1.setubi_id = null ポイントは外部結合 通常のJOINは双方の結合キーが存在するレコードしか出力されませんが、 外部結合なら、一方しか存在しないレコードも出力されます。 LEFT JOIN tbl_data1 ON tbl_data2.setubi_id2 = tbl_data1.setubi_id なので、左側のテーブル tbl_data2 のキー(setubi_id2)のリンク先である tbl_data1.setubi_id が存在しないレコードも出力されます。 結果として、tbl_data2にしか存在しないレコードだけが、 INSERT INTO tbl_data1 の対象となり、エラーは発生しないはず。 ※ 実際に動かして試したわけじゃないので、エラーになったらごめん
管理者用
- Child Tree -