Я создаю проект в Java вместе с MySql базой данных. для моего проекта я хочу базу данных для пин-кода, которая должна быть в форме (первичный ключ пин-кода, талук, район, штат). Я нашел так много sql файлов дампа и csv для одной и той же базы данных, но проблема в том, что у них так много повторяющихся строк, поэтому пин-код не уникален. Я пытался так много способов удалить повторяющиеся строки из моей таблицы, как
1. WITH CTE AS
(
SELECT *, ROW_NUMBER() OVER (PARTITION BY pincode, taluk, dist, state ORDER BY pincode, taluk, dist, state) RowNo
FROM city
)
select * from CTE WHERE RowNo = 1;
// Он показывает 35140 строк, но должно быть 19100 строк. Если я попытался использовать запрос на удаление с ним, то выдается ошибка [База данных] .cte не существует.
2. DELETE FROM city
WHERE pincode NOT IN
(
SELECT MAX(pincode) AS MaxRecord
FROM city c
GROUP BY taluk, dist, state
);
3. DELETE c FROM city c
INNER JOIN
(
SELECT *, RANK() OVER (PARTITION BY pincode ORDER BY pincode) as rank FROM city
) t ON c.pincode = t.pincode
WHERE rank > 1;
// любой из этих запросов у меня не работает.
4. alter table city drop column created_at;
create table city_temp like city;
INSERT INTO city_temp SELECT DISTINCT * FROM city;
// Работает, но создает временную таблицу с 35140 строками, но должно быть 19100 строк.
Мне нужна база данных с уникальными пин-кодами 19100
, если она у вас есть, пожалуйста, предоставьте мне или любые другие рабочие решения для удаления дублирующейся строки. Есть несколько повторяющихся строк:
504251 Bellampalle Adilabad TELANGANA
504251 Luxettipet Adilabad TELANGANA
Заранее большое спасибо за ваше время и рабочее решение.
Улучшение Если возможно, можем ли мы добавить дубликат RowNo в текущую таблицу, например CTE?