Пинкод, Талук, район, государственная база данных для Индии - PullRequest
0 голосов
/ 27 апреля 2020

Я создаю проект в 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?

...