使用MySQL从表中删除重复数据

时间:2012-02-01 09:01:08

标签: mysql duplicate-removal sql-delete any

我正在尝试从数据库中删除重复数据。我找到了a nice example on here of how to do this on an oracle database

该答案的底部查询(仅选择重复的行)在MySQL中有效,但删除查询(见下文)不...

"DELETE FROM studios as a
 WHERE a.id >
       ANY (SELECT b.id
              FROM studios as b
             WHERE a.name = b.name
               AND a.email  = b.email
            )"

我得到的错误是:

You have an error in your SQL syntax; check the manual that corresponds to your 
MySQL server version for the right syntax to use near 'a
 WHERE a.id >
       ANY (SELECT b.id
              FROM studios as b
           ' at line 1

所以,我找了一个正确的delete syntaxany syntax来使用,但找不到我的查询有什么问题......有什么想法吗?

2 个答案:

答案 0 :(得分:2)

尝试此查询 -

DELETE t1 FROM studios t1
  JOIN (SELECT MIN(id) id, name, email FROM studios GROUP BY name, email) t2
    ON t1.id <> t2.id AND t1.name = t2.name AND t1.email = t2.email;

答案 1 :(得分:0)

AS运算符不适用于MySQL中的DELETE语句。

试试这个(未经证实):

DELETE FROM a using studios a
WHERE a.id >
ANY 
(
    SELECT b.id
    FROM studios as b
    WHERE a.name = b.name
    AND a.email  = b.email
)