-1

最初のレコードを除く特定のユーザーからすべてのレコードを削除しようとしていますが、次のエラーが発生しています:

1093 - FROM 句での更新にターゲット テーブル 'History' を指定することはできません

何が問題なのかわかりません。また、同じ解決策を提案する SO で同様の質問を見つけました。これは私のクエリです:

DELETE FROM `History` WHERE ID = '3' AND Date NOT IN (SELECT min(Date) FROM `History` WHERE ID = '3')
4

3 に答える 3

1

に変換してみるJOIN

DELETE  a
FROM    History a
        LEFT JOIN History b
            ON a.Date = b.Date AND
                b.ID = 3
WHERE   b.date IS NULL AND
        a.ID = 3

上記のステートメントを実行する前に、まずテーブルをバックアップしてください。

于 2013-04-19T18:11:02.173 に答える
0

以下のクエリを一度お試しください

  DELETE FROM `History` main WHERE main.ID = '3' 
      AND main.Date NOT IN 
           (SELECT min(inn.Date) FROM `History` WHERE main.ID = inn.id)
于 2013-04-19T18:16:35.570 に答える
0

この問題を解決する別の方法は、サブクエリをサブクエリの別のレイヤーにラップすることです。MySQL は、このエラーを防止する中間クエリを生成します。

DELETE FROM `History`
    WHERE ID = '3' AND
           Date NOT IN (select mindate
                        from (SELECT min(Date) as mindate FROM `History` WHERE ID = '3')
                       )
于 2013-04-19T18:29:48.380 に答える