エラーになる(as tmpが意味をなしてない)
update hoge set code = 0 where id IN (select id from hoge as tmp where id = 1 group by id order by id) ;
こんなエラー
ERROR 1093 (HY000): You can't specify target table 'hoge' for update in FROM clausemysqlって同じテーブルに対するサブクエリからの操作ができないんですよね。
リファレンスマニュアルより
http://dev.mysql.com/doc/refman/5.1/ja/subquery-errors.html
サブクエリは、SELECT ステートメント同様 UPDATE と DELETE ステートメント内で正当なので、UPDATE ステートメント内で、割り当ての為にサブクエリを利用する事ができます。しかし、同じテーブルを(この場合、テーブル t1)サブクエリの FROM 条項と更新ターゲットの両方に対して利用する事はできません。
ではどうするかというと、いっこ別に fromでtmpを受け取ってあげれば実はOK
うまくいく
update hoge set code = 0 where id IN ( select id from (select id from hoge where id = 1 group by id order by id) as tmp ) ;