SQLについて教えてください。以下のようなことはできますでしょうか。
SQLについて教えてください。以下のようなことはできますでしょうか。 例1のように登録データの、check_dateと、すでに登録されているcheck_dateの一番直近日のchange_dateを比較し、check_date>change_dateであれば新規に追加。 例2のように、登録データの、check_dateと、すでに登録されているcheck_dateの一番直近日のchange_dateを比較し、check_date<=change_dateであれば、すでに登録されている、比較した値を、登録データに上書きしたいのですがどのようにSQLを記述したらよろしいでしょうか。 言葉では伝わりづらいので画像を添付しております。ご回答いただければ幸いです。 よろしくお願いいたします。
申し訳ございません。 例1の 登録後のテーブルの値を間違えておりました。 誤:1111111 2022/4/10 2022/5/1 正:1111111 2022/4/16 2022/5/1 よろしくお願いいたします。
MySQL・96閲覧
ベストアンサー
文章での条件がよく分からんので、添付画像を基に書いてみた。 SQL は2つ。 更新SQL: UPDATE テーブル SET change_date = ( SELECT change_date FROM 登録データ WHERE 登録データ.id = テーブル.id) WHERE テーブル.check_date = ( SELECT MAX(A.check_date) FROM テーブル AS A WHERE テーブル.id = A.id) AND EXISTS( SELECT * FROM 登録データ WHERE 登録データ.id = テーブル.id AND テーブル.change_date < 登録データ.change_date); 試してないけど。 追加SQL: INSERT INTO テーブル ( id, check_date, change_date ) SELECT id, check_date, change_date FROM 登録データ WHERE NOT EXISTS( SELECT * FROM テーブル WHERE テーブル.id = 登録データ.id AND テーブル.check_date >= 登録データ.check_date);
質問者からのお礼コメント
ご回答ありがとうございます。 まだ試せておりませんが、参考にさせていただきます。 またわからないことがあればご回答いただければ幸いです。
お礼日時:4/28 19:11