2011-07-18 66 views
0

如何修復這個錯誤如何解決我的MySQL錯誤1093

[Err] 1093 - You can't specify target table 'user_log' for update in FROM clause

DELETE 
    user_log 
FROM 
    user_log 
WHERE 
    UpdateDate < (SELECT MAX(UpdateDate) 
    FROM user_log 
    AS lookup 
    WHERE Email = user_log.Email) 

讓我知道

回答

1

然後使用:

delete從[表],其中[狀態]。

也適用於max您必須先將數據分組。

DELETE 
FROM 
    user_log 
WHERE 
    UpdateDate < (SELECT MAX(UpdateDate) 
    FROM user_log 
    GROUP BY Email 
    HAVING Email = user_log.Email) 

當你想使用組的條件,那麼你必須使用有,而不是在哪裏。

+0

其實你不需要GROUP BY和HAVING在這個MySQL查詢中。當您在不使用GROUP BY的情況下使用聚合函數時,聚合函數將對整個結果集進行操作。所以在這種情況下只使用MAX和WHERE。 –

0

變化;

DELETE 
FROM 
    user_log 
WHERE 
    UpdateDate < (SELECT MAX(UpdateDate) 
FROM user_log 
GROUP BY Email 
HAVING Email = user_log.Email) 

您不能指定在DELETE語句中刪除哪些字段,它們都是。

0

我不是100%肯定你的努力做,但你可能會試圖做到這一點

DELETE FROM user_log 
WHERE UpdateDate < (
    SELECT MAX(UpdateDate)  
    FROM user_log AS lookup  
    WHERE Email = lookup.Email 
) 

希望這對你的作品。

如果要刪除表中的數據
+0

最大你必須使用group by和 – Raffael