作成日:2023-04-26, 更新日:2023-06-15
メモ
…どう説明すれば良いのか分からないので…テーブルの設定例とクエリとコメントをメモしておく
テーブルの設定例
- 「テーブル名: tbl_zebra」
- 「user_id, user_name」をユニークキーに設定
クエリ
insert into `tbl_zebra` ( user_id, user_name, created_at, updated_at ) select 14, '丸ごとシマウマ', 1682493331, 1682493331 from `tbl_zebra` where not exists ( select 1 from `tbl_zebra` where 1 and user_id = 14 and user_name = '丸ごとシマウマ' ) limit 1;
クエリのメモ
上記のクエリと同じだけど、コメントを色々と追加
insert into `tbl_zebra` ( user_id, user_name, created_at, updated_at ) # ▼以下が存在しないときだけ表示させるクエリ select 14, '丸ごとシマウマ', 1682493331, 1682493331 from `tbl_zebra` # ←参照しないからココのテーブル名は(insertするテーブル以外で存在するテーブルなら)何でもOK(※A) where not exists ( # ▼存在しているか確認したいデータ select 1 # ←「not exists()」のフラグ用なので何でもいい。 from `tbl_zebra` where 1 and user_id = 14 and user_name = '丸ごとシマウマ' ) limit 1; # ←コイツがないと同じデータがいっぱいでてくる。「※A」で指定したテーブルのレコード数分?
メモ
▼チートシート代わり
insert into 対象テーブル ( カラムたち ) select 保存データ from 「対象テーブル以外で存在する適当なテーブル」 where not exits ( select 1 from 対象テーブル where 条件 ) limit 1 ;
※バルクインサートもいけそうな気がする