1

我正在尝试从我的数据库中删除重复数据。我在这里找到了一个很好的例子,说明如何在 oracle 数据库上执行此操作

该答案的底部查询(仅选择重复的行)在 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

所以,我寻找了正确的删除语法任何要使用的语法,但找不到我的查询有什么问题......有什么想法吗?

4

2 回答 2

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;
于 2012-02-01T09:28:01.373 回答
0

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

试试这个(未经验证):

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
)
于 2012-02-01T09:23:12.950 回答