MySQLにて実現させたいSQL文が思いつきません。 状況は以下の通りです。 【date(日付保持テーブル)】 +----------+----------+------+-----+---------+----------+ | Field | Type | Null | Key | Default | Extra | +----------+----------+------+-----+---------+----------+ | id | int | NO | PRI | NULL | auto_increment | | date | date | YES | | NULL | | | created_dt | datetime | YES | | NULL | | | updated_dt | datetime | YES | | NULL | | | deleted_dt | datetime | YES | | NULL | | +----------+----------+------+-----+---------+----------+ テーブルには2件のレコードが登録済み id:1 date:2022-02-01 created_dt:2022-0-01 00:00:00 updated_dt:2022-01-01 00:00:00 deleted_dt:null id:2 date:2022-02-02 created_dt:2022-01-01 00:00:00 updated_dt:2022-01-01 00:00:00 deleted_dt:null 以下、作成したいSQLの条件 dateに登録する日付のリストを保持 (例:2022-01-01、2022-01-02、2022-01-03、の3件) 3件の日付を登録する際に ・登録対象の日付がテーブル上のdateになければInsert(今回の例では3件Insert) ⇒INSERT INTO date values(0,'2022-01-01','現在日付','現在日付',null); INSERT INTO date values(0,'2022-01-02','現在日付','現在日付',null); INSERT INTO date values(0,'2022-01-03','現在日付','現在日付',null); ・テーブルに登録済みのdate(2022-02-01、2022-02-02)が登録対象のリストにいない場合、対象レコードのdeleted_dtに現在日付を入れる ⇒UPDATE date SET updated_dt = '現在日付', deleted_dt = '現在日付' WHERE date = '2022-02-01'; UPDATE date SET updated_dt = '現在日付', deleted_dt = '現在日付' WHERE date = '2022-02-02'; 上記INSERTとUPDATEをSQLで実現させたいのですが、 UPDATEのWHEREで使用したい「登録日付リストにいない日付」 ('2022-02-01'と'2022-02-02')をどうやって求めるべきか適切なSQL文が思いつきません。 ご協力の程、よろしくお願いいたします。
MySQL