MySQLのDELETE文でサブクエリを使う方法

とある案件で検索結果に表示されるIDがどうにも重複していたので解析。
そもそもクエリが書き換えられているので、実行しているSQL文をバイナリサーチ。

とりえあえず、INNNER JOINの時点で重複してる。

なんだろなーと思ったら、同じmeta_keyが2つのmeta_idで登録されているっぽい。

ので、重複したIDをDELETE文で一括で消そうとしたけどなかなかうまくいかなかったので忘備録。

うまくいかない(参考:自分)

うまくいかない(参考:http://0-9.sakura.ne.jp/blog/archives/2008/07/10013846.html)

うまくいかない(参考:https://stackoverflow.com/questions/17742214/you-cant-specify-target-table-name-for-update-in-from-clause)

うまくいった

http://blogger.shase.info/2014/09/mysqlerror1093.html

DELETEとかUPDATE文は更新対象のテーブルのサブクエリはそのままでは実行できないので、
一時テーブル?のようなものを使うらしい。

知らんかった。

この投稿へのコメント

コメントはありません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です