2013-10-03 77 views
0

我尝试创建mysql事件应该删除重复的表的行。mysql删除子查询不能正常工作的查询

这是我的查询

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

尽量提供您的子查询中的自定义的别名,你不能直接指定更新同桌/删除

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