0
mysql> delete from valeurs_actions where id not in
-> (select * from
-> (select t1.id from valeurs_actions t1 inner join(select action_id,max(temps_action) as temps_action from valeurs_actions
-> group by action_id) as t2
-> on t1.action_id=t2.action_id and t1.temps_action=t2.temps_action)
-> as id_as);
を削除するときは、FROM句に更新のターゲット表 'valeurs_actions' を指定することはできません私は削除するには、次を実行しようとしたが、私はエラーを取得:ERROR 1093 (HY000): You can't specify target table 'valeurs_actions' for update in FROM clause
ERROR 1093(HY000):MySQLデータベースから
btw私はこのコードを最適化できると確信していますが、いくつかのサンプルデータと期待される出力が必要です。しかし、後で別の質問を作成する可能性があります。 –
実際には、以前は不要だった「SELECT * FROM」が必要でした。 Oracleが[オプティマイザが5.7の派生テーブルを処理する方法を変更する](https://dev.mysql.com/doc/refman/5.7/en/subquery-optimization.html#derived-table-optimization)の前に奇跡を起こしました。以前は、外部クエリが完全に分析される前に、内部クエリを暗黙的な一時テーブルに具体化するように強制されていました。 'SELECT * FROM(SELECT .../* t1 * /を参照する単一の列を返すクエリ)/ tmp)' –