2013-10-06 3 views
0

В моей таблице много повторяющихся строк. У меня есть SELECT, который предоставляет данные, которые я хочу удалить, но как я могу это сделать? Что бы я ни пытался, я получаю сообщение об ошибке.Измените инструкцию SELECT на DELETE

SELECT * 
    FROM tablename t 
WHERE NOT EXISTS (   
       SELECT 1 
       FROM tablename t2 
       WHERE t2.column = t.column 
       HAVING COUNT(*) = 1 
        ) 
+1

изменения 'выбрать *' в 'delete' ... – Ben

+0

PS, если у вас есть дубликаты, то вам нужно, чтобы начать обучение о [уникальных и первичных ключах] (http://en.wikipedia.org/wiki/Unique_key). – Ben

+0

да, я пробовал это, но он показывает ошибку: # 1064 - У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего MySQL-сервера, для правильного синтаксиса для использования рядом с 't WHERE NOT EXISTS (SELECT 1 FROM norma) в строке 2, btw. kollation is utf8mb4_bin – user2826395

ответ

0

Просто нужно изменить 'SELECT *' до 'DELETE'

DELETE 
FROM tablename t 
WHERE NOT EXISTS (   
       SELECT 1 
       FROM tablename t2 
       WHERE t2.column = t.column 
       HAVING COUNT(*) = 1 
      ) 
+0

да, я попробовал это, но он показывает Ошибка: # 1064 - У вас есть ошибка в синтаксисе SQL, проверьте руководство, соответствующее вашей версии сервера MySQL, для правильного синтаксиса, используемого рядом с 't WHERE NOT EXISTS (SELECT 1 FROM norma' в строке 2, btw. kollation is utf8mb4_bin – user2826395

Смежные вопросы