C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■93290 / 2階層)  別のテーブルの値を別のテーブルに挿入させてから表示したい
□投稿者/ ぶなっぷ (214回)-(2019/12/03(Tue) 10:59:45)
2019/12/03(Tue) 11:04:29 編集(投稿者)
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 の対象となり、エラーは発生しないはず。
 ※ 実際に動かして試したわけじゃないので、エラーになったらごめん

編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[1]: 別のテーブルの値を別のテーブルに挿入させてから表示.. /無名 →Re[3]: 別のテーブルの値を別のテーブルに挿入させてから表示.. /無名
 
上記関連ツリー

別のテーブルの値を別のテーブルに挿入させてから表示したい / 無名 (19/12/03(Tue) 10:12) #93288
Re[1]: 別のテーブルの値を別のテーブルに挿入させてから表示.. / 無名 (19/12/03(Tue) 10:13) #93289
│├ 別のテーブルの値を別のテーブルに挿入させてから表示したい / ぶなっぷ (19/12/03(Tue) 10:59) #93290 ←Now
││└ Re[3]: 別のテーブルの値を別のテーブルに挿入させてから表示.. / 無名 (19/12/04(Wed) 17:14) #93316
││  └ Re別のテーブルの値を別のテーブルに挿入させてから表示したい / ぶなっぷ (19/12/05(Thu) 15:09) #93332
│└ Re[2]: 別のテーブルの値を別のテーブルに挿入させてから表示.. / KOZ (19/12/03(Tue) 11:56) #93292
│  └ Re[3]: 別のテーブルの値を別のテーブルに挿入させてから表示.. / 無名 (19/12/04(Wed) 17:17) #93317
Re[1]: 別のテーブルの値を別のテーブルに挿入させてから表示.. / 大谷刑部 (19/12/03(Tue) 11:40) #93291
│└ Re[2]: 別のテーブルの値を別のテーブルに挿入させてから表示.. / 無名 (19/12/04(Wed) 17:18) #93318
Re[1]: 別のテーブルの値を別のテーブルに挿入させてから表示.. / WebSurfer (19/12/03(Tue) 13:29) #93293
  └ Re[2]: 別のテーブルの値を別のテーブルに挿入させてから表示.. / 無名 (19/12/04(Wed) 17:24) #93319
    ├ Re[3]: 別のテーブルの値を別のテーブルに挿入させてから表示.. / KOZ (19/12/04(Wed) 18:09) #93320
    └ Re[3]: 別のテーブルの値を別のテーブルに挿入させてから表示.. / WebSurfer (19/12/05(Thu) 10:33) #93325

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信