Как исправить ошибку MySQL 1093 - PullRequest
0 голосов
/ 18 июля 2011

Как исправить эту ошибку

[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)

Сообщите мне

Ответы [ 3 ]

1 голос
/ 18 июля 2011

, если вы хотите удалить данные таблицы, тогда вы используете:

удалить из [таблицы], где [условие].

также для макс. Вы должны сначала сгруппировать свои данные.

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

, когда вы хотите использовать условие для группы, к тому времени вы должны использовать вместо вместо.

0 голосов
/ 18 июля 2011

Я не уверен на 100%, что вы пытаетесь сделать, но вы, возможно, пытаетесь это сделать

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

Надеюсь, это сработает для вас.

0 голосов
/ 18 июля 2011

изменить на;

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

Нельзя указать, какие поля удаляются в операторе DELETE, все они.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...