Как удалить повторяющиеся строки в таблице MySQL? - PullRequest
0 голосов
/ 26 мая 2019

Я использую следующий запрос, который я видел из другого вопроса stackoverflow, но получаю ошибку.

delete from mytable
 where myid not in (
    select max(myid)
      from mytable
group by myid2)

Ошибка:

# 1093 - Таблица 'mytable'указывается дважды, как в качестве цели для «УДАЛИТЬ», так и в качестве отдельного источника для данных

Редактировать 2:

Я также пробовал этот запрос:

delete from mytable
 where myid in (
    SELECT
    myid, COUNT(*)
FROM
    mytable
GROUP BY
    myid2
HAVING 
    COUNT(*) > 1)

И получил эту ошибку:

# 1241 - операнд должен содержать 1 столбец (ы)

1 Ответ

1 голос
/ 26 мая 2019

В MySQL для этой цели вам нужно использовать JOIN.Я предполагаю, что вы имеете в виду что-то вроде этого:

delete t
   from mytable t left join
        (select max(myid) as myid
         from mytable
         group by myid2
        ) tt
        on t.myid = tt.myid
   where tt.myid is null;

Где ? - это то, что вы действительно хотите сгруппировать.Ваша версия не будет ничего удалять, потому что group by и max() используют один и тот же столбец.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...