Удаление дублирующихся данных из таблицы с использованием MySQL - PullRequest
1 голос
/ 01 февраля 2012

Я пытаюсь удалить дубликаты данных из моей базы данных.Я нашел хороший пример того, как это сделать в базе данных оракула .

Нижний запрос из этого ответа (только с выделением повторяющихся строк) работает в 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

Итак, я искал правильный синтаксис удаления и любой синтаксис , но не смог найти ничего неправильного в моем запросе... Есть идеи?

Ответы [ 2 ]

2 голосов
/ 01 февраля 2012

Попробуйте этот запрос -

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;
0 голосов
/ 01 февраля 2012

Оператор 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
)
...