2013-10-03 3 views
0

Я пытаюсь создать mysql событие, которое должно удалять повторяющиеся строки таблицы.mysql delete query with sub query not working

Это мой запрос

DELETE FROM locations 
WHERE id NOT IN (SELECT id 
       FROM locations 
       GROUP BY acc_id,`date`) 

Я получил эту ошибку:

Error Code: 1093 
You can't specify target table 'locations' for update in FROM clause. 

Как я могу изменить запрос, чтобы заставить его работать?

+0

Дубликат: http://stackoverflow.com/questions/2630440/how-to-delete-duplicates-on-mysql-table – crafter

ответ

3

В MySQL вы не можете удалить из той же таблицы, которую вы выбираете. Но вы можете обмануть MySQL с другой подзапрос

DELETE FROM locations 
WHERE id NOT IN 
(
    select * from 
    (
     SELECT id 
     FROM locations 
     GROUP BY acc_id, `date` 
) x 
) 
0

Try предоставить пользовательский псевдоним в вашем подзапрос вы не можете напрямую указать ту же таблицу в обновлении/удалить

DELETE FROM locations 
WHERE id NOT IN (
SELECT new_table.id FROM (
SELECT id 
FROM locations 
GROUP BY acc_id,`date` 
) new_table  
) 
+1

Это работает благодаря. – Lusi