dポイントプレゼントキャンペーン実施中!

よろしくお願いします。

仮に、「Recent3Years」と「DB2015」という2つのテーブルがあるとします。
フィールドはどちらも同じ構成で、name (varchar), birthday (timestamp), tel (varchar) とします。
ここで、Recent3Years テーブルの中のレコードで、DB2015 テーブルの中にもあるレコードについては、Recent3Yearsから削除したいのです。条件は、name, birthday, telのすべてが一致することです。

*同姓同名、同じ誕生日、同じ電話番号の人が複数いる可能性は無視します。

次のようなクエリで重複データをSELECTすることはできますが、このSELECTされた結果を削除する方法がわかりません。

Select Recent3Years.name, DB2015.name, Recent3Years.birthday, DB2015.birthday, Recent3Years.tel, DB2015.tel from Recent3Years, DB2015 Where Recent3Years.name = DB2015.name AND Recent3Years.birthday = DB2015.birthdayame AND Recent3Years.tel = DB2015.tel;

単純な DELETE 構文では動作せず、調べたところ、サブクエリというものやジョインという技を使うようなのですが、見よう見まねで作ってみてもうまくいきません。上記のデータ構造で実際にクエリをどう書くのか、教えていただけませんでしょうか。

よろしくお願いします。

MySQL 5.7.14
Windows 7 64bit

A 回答 (1件)

複数テーブル構文を使います。



https://dev.mysql.com/doc/refman/5.6/ja/delete.h …

DELETE Recent3Years
FROM Recent3Years, DB2015
WHERE Recent3Years.name = DB2015.name
AND Recent3Years.birthday = DB2015.birthday
AND Recent3Years.tel = DB2015.tel;

または

DELETE FROM Recent3Years
USING Recent3Years, DB2015
WHERE Recent3Years.name = DB2015.name
AND Recent3Years.birthday = DB2015.birthday
AND Recent3Years.tel = DB2015.tel;
    • good
    • 0
この回答へのお礼

できました!ありがとうございます。
Delete Recent3Years のあとに FROMをつなげてもう一方のテーブルを書けば良かったんですね。
助かりました。

お礼日時:2018/01/05 13:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!