Ваш запрос имеет многочисленные вопросы:
DELETE FROM location
where country in (SELECT *
FROM table_name
GROUP BY country, state, city
having COUNT(*)>);
Такие, как: (1) вы возвращаете более одного столбца из подзапроса, но по сравнению с только один столбец. (2) У вас нет номера после сравнения. (3) Он относится к двум различным таблицам.
Способ структурирования ваших данных (без уникального идентификатора в строке), сложно определить, какие строки удалить. Я бы предположил, что вместо этого вы используете метод truncate
. А затем научиться ставить авто Инкрементирование идентификатор в каждой таблице:
create temporary table tmpLocation as
select country, state, city from location;
truncate table location;
insert into location(country, state, city)
select distinct country, state, city
from tmpLocation;
drop table tmpLocation;
На больших таблиц с большим количеством удалений, это более эффективно, а также.
вы не указали после «count (*)>» введите число после и затем попробуйте один раз. –
Имеет ли таблица какой-либо первичный ключ или подобное, что делает его уникальным, или это действительно только эти 3 столбца? –