Реклама на сайте Advertise with us

Удаление дублей в mysql

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:



С нами с 08.05.05
Сообщения: 6281
Рейтинг: 656

Ссылка на сообщениеДобавлено: 13/02/18 в 20:46       Ответить с цитатойцитата 

phpmyadmin В БД по колонке title
xxx 10 записей
xxxx 5 записей
xxxxx 7 записей
и так далее.
Всего таких 2к ))
Руками эт жопа.
Какие варианты есть ?

0
 



С нами с 19.05.17
Сообщения: 191
Рейтинг: 326

Ссылка на сообщениеДобавлено: 13/02/18 в 21:46       Ответить с цитатойцитата 

Не забудь сделать копию таблицы, я хз какой будет результат icon_cool.gif

DELETE * FROM table
WHERE id NOT IN(
SELECT MIN(id) AS id
FROM table
GROUP BY title
)

5
 

www.phpdevs.com

С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105


Передовик Master-X (01.09.2005) Передовик Master-X (16.09.2005) Передовик Master-X (01.10.2005) Передовик Master-X (16.08.2006) Передовик Master-X (16.10.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 14/02/18 в 04:37       Ответить с цитатойцитата 

php скриптик тебе в помощь, т.е. попросить любого прогера его написать. Хотя запрос от mx-user: теоретически выглядит правильным и вполне может сработать.

Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.

4
 



С нами с 08.05.05
Сообщения: 6281
Рейтинг: 656

Ссылка на сообщениеДобавлено: 14/02/18 в 15:00       Ответить с цитатойцитата 

Stek писал:
php скриптик тебе в помощь, т.е. попросить любого прогера его написать.


Сколько такой скриптик будет стоить ? )

0
 



С нами с 18.10.02
Сообщения: 4165
Рейтинг: 3365

Ссылка на сообщениеДобавлено: 14/02/18 в 15:24       Ответить с цитатойцитата 

На кой тебе скриптик, когда тебе рабочий SQL запрос дали, которой только выполнить осталось?

1
 
+ + +


С нами с 05.12.17
Сообщения: 12
Рейтинг: 1

Ссылка на сообщениеДобавлено: 14/02/18 в 15:31       Ответить с цитатойцитата 

Сделай тестовую таблицу с дублями и проверь на ней решение выше.

0
 



С нами с 08.05.05
Сообщения: 6281
Рейтинг: 656

Ссылка на сообщениеДобавлено: 14/02/18 в 16:12       Ответить с цитатойцитата 

Если я все верно понял
DELETE * FROM `Название таблицы` table
WHERE id NOT IN(
SELECT MIN(id) AS id
FROM table
GROUP BY (название колонки)
)

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* FROM table WHERE id NOT IN( SELECT MIN(id) AS id FROM table GROUP BY p' at line 1

0
 



С нами с 18.10.02
Сообщения: 4165
Рейтинг: 3365

Ссылка на сообщениеДобавлено: 14/02/18 в 21:15       Ответить с цитатойцитата 

DH писал:
Если я все верно понял
DELETE * FROM `Название таблицы` table
WHERE id NOT IN(
SELECT MIN(id) AS id
FROM table
GROUP BY (название колонки)
)

1. В запросе DELETE не нужно ставить никаких звездочек после DELETE. Просто пишется "DELETE FROM ...".
2. После "FROM" должно быть название таблицы без всяких "table". Как в первом, так и во втором случае.
3. Вероятно MySQL не даст изменять/удалять таблицу, когда условие строится непосредственно на той же таблице, но это можно обойти вложенным селектом.
Т.е. итоговый запрос должен быть таким:
DELETE FROM test WHERE id NOT IN (SELECT * FROM (SELECT MIN(id) AS id FROM test GROUP BY title) AS tmp);
где test - это название таблицы

5
 



С нами с 20.06.10
Сообщения: 171
Рейтинг: 445

Ссылка на сообщениеДобавлено: 14/02/18 в 22:00       Ответить с цитатойцитата 

ALTER IGNORE TABLE table_name ADD UNIQUE INDEX tmp(column_name)

только сделай дамп старой таблицы на всякий случай)
получившийся индекс можешь потом удалить в Structure - indexes

5
 



С нами с 08.05.05
Сообщения: 6281
Рейтинг: 656

Ссылка на сообщениеДобавлено: 14/02/18 в 22:46       Ответить с цитатойцитата 

Mika писал:
1. В запросе DELETE не нужно ставить никаких звездочек после DELETE. Просто пишется "DELETE FROM ...".
2. После "FROM" должно быть название таблицы без всяких "table". Как в первом, так и во втором случае.
3. Вероятно MySQL не даст изменять/удалять таблицу, когда условие строится непосредственно на той же таблице, но это можно обойти вложенным селектом.
Т.е. итоговый запрос должен быть таким:
DELETE FROM test WHERE id NOT IN (SELECT * FROM (SELECT MIN(id) AS id FROM test GROUP BY title) AS tmp);
где test - это название таблицы


Ура сработало )))))) smail54.gif smail54.gif smail54.gif

А как почистить title от ненужных символов ()№;%:}{ итд ?

0
 

www.phpdevs.com

С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105


Передовик Master-X (01.09.2005) Передовик Master-X (16.09.2005) Передовик Master-X (01.10.2005) Передовик Master-X (16.08.2006) Передовик Master-X (16.10.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 15/02/18 в 04:40       Ответить с цитатойцитата 

DH писал:
Сколько такой скриптик будет стоить ? )

$10


DH писал:
А как почистить title от ненужных символов ()№;%:}{ итд ?


UPDATE table_name SET title = REPLACE(title, '№', '');
Вроде так. Ну и соответственно перед запуском проверить как будет выглядеть:

SELECT REPLACE(title, '№', '') AS new_title FROM table_name;

Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.

4
 



С нами с 08.05.05
Сообщения: 6281
Рейтинг: 656

Ссылка на сообщениеДобавлено: 15/02/18 в 17:41       Ответить с цитатойцитата 

Stek писал:
$10




UPDATE table_name SET title = REPLACE(title, '№', '');
Вроде так. Ну и соответственно перед запуском проверить как будет выглядеть:

SELECT REPLACE(title, '№', '') AS new_title FROM table_name;


Работает! Спасибо smail54.gif smail54.gif smail54.gif

1
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »