質問: MySQLで2つのテーブルから重複したデータを抽出し、重複したものは削除したいです。 考えているものはこんな感じです。このようなテーブルがあるとします。 テーブルA |住所|生年月日|名前| |XX市|1月1日|太郎| |YY市|1月2日|花子| |XX市|1月3日|一郎| |YY市|1月4日|三郎| テーブルB |住所|生年月日|名前| |XX市|1月1日|太郎| |YY市|2月2日|花子| |XX市|3月3日|次郎| |YY市|1月4日|三郎| テーブルAとテーブルBを比較して、AとBで住所、生年月日、名前のすべてに一致するレコードのみをテーブルBから削除するにはどうすればいいでしょうか? SQL文がうまく思いつかなかったので知恵をお貸しいただけたら幸いです。 実際はもっと大量のデータで行います。 結果としては テーブルB |住所|生年月日|名前| |YY市|2月2日|花子| |XX市|3月3日|次郎| となるようにしたいです。
回答: 次のいずれかのクエリで可能です。 ``` DELETE FROM B USING A JOIN B USING(住所,生年月日,名前); DELETE FROM B USING A NATURAL JOIN B; DELETE B FROM A JOIN B USING (住所,生年月日,名前); DELETE B FROM A NATURAL JOIN B; ``` 構文について詳しくはマニュアルを見ましょう。