powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Удалить дубликаты по Description
12 сообщений из 12, страница 1 из 1
Удалить дубликаты по Description
    #38866065
sqlbot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте дорогие форумчане.
Хочу к вам обратится за помощью.
У меня есть сайт, а в нем есть база данных, а в ней есть таблицы,

- id
- Title
- Description

Я могу удалить дубликаты, по полю, Title таким образом.

ALTER IGNORE TABLE xzclf_ads ADD UNIQUE INDEX(title);


Но вот когда я требую удалить, дубликат из поля Description

Программа отвечает мне, вот что : BLOB/TEXT column 'description' used in key specification without a key length

Вопрос, как вы посоветуете удалить все дубликаты записей из поля Description

Я вас предупреждаю, в базе, 50 тысяч записей.

Спасибо вам друзья.
...
Рейтинг: 0 / 0
Удалить дубликаты по Description
    #38866207
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ваши случаи уже обсуждались, воспользуйтесь поиском, например - Уникальное поле типа TEXT и добавление констрейнтов
...
Рейтинг: 0 / 0
Удалить дубликаты по Description
    #38866381
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тебе дубликаты надо удалить, или простой запрос написать????

Код: sql
1.
2.
3.
4.
5.
6.
7.
delete t2

from

mytable t1 left join mytable t2 on(t1.description = t2.description)

where t1.id < t2.id and t2.id IS NOT NULL
...
Рейтинг: 0 / 0
Удалить дубликаты по Description
    #38866387
sqlbot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это не помогает..
...
Рейтинг: 0 / 0
Удалить дубликаты по Description
    #38866411
sqlbot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex564657498765453тебе дубликаты надо удалить, или простой запрос написать????

Код: sql
1.
2.
3.
4.
5.
6.
7.
delete t2

from

mytable t1 left join mytable t2 on(t1.description = t2.description)

where t1.id < t2.id and t2.id IS NOT NULL



Мне нужно удалить дубликаты, по полю Description которое имеет свойство LONGTEXT.
...
Рейтинг: 0 / 0
Удалить дубликаты по Description
    #38866416
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sqlbotalex564657498765453тебе дубликаты надо удалить, или простой запрос написать????

Код: sql
1.
2.
3.
4.
5.
6.
7.
delete t2

from

mytable t1 left join mytable t2 on(t1.description = t2.description)

where t1.id < t2.id and t2.id IS NOT NULL



Мне нужно удалить дубликаты, по полю Description которое имеет свойство LONGTEXT.

а идея моего запроса что удаляет?
...
Рейтинг: 0 / 0
Удалить дубликаты по Description
    #38866423
sqlbot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я думаю она удаляет то что нужно, но вот дело в том, что там 50к записей, и это реально удалить такой коммандой дубли ?
Т.е мне нужно что бы дубли удалились, но одна версия дубля осталась, т.е не все полностью, а одну запись оставлять. Если это есть в вашем примере это хорошо, но вот время, и сможет ли такой запрос выполниться при условии что в базе 50к постов..
...
Рейтинг: 0 / 0
Удалить дубликаты по Description
    #38866424
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстате, незнаю насколько это верно, но встречал мысль.

если есть поле текст, то шансы на совпадение md5 у разных текстов малы, но совпадение

md5(text) и md5(symbol+text) уже крактически ноль. только символ добавлять именно вначале. суть работы мд5, он берёт первый блок данных, выщитывает по нему значения, на освновании значений и второго блока новые значения и так до конца данных.

если доставить символ в конце, то весь процес подщёта суммы будет совпадать, отличие будет только на последнем этапе, но при условии что последний участок текста различается, а ведь это может быть и не так....скажем концовка стандартная.

если же вначале добавить.то сместяться границы разделения данных на куски, и уже в том куске где данные различаються, фактически гарантированно вычисления пойдут по разным путям. и шанс на то что суммы всёравно совпадут уже практически ноль.

да и математик один показал и доказал способ взлома мд5, котоырй строиться на том, что по первому различию в данных, нужно дальше подгадать другое различие. поставив символ в начале, мы смещая границы разбиение, меняем вычисления гдето в начале на различиях, но в следующих блоках не меняя ничего не даём возможность получить тотже результат.
...
Рейтинг: 0 / 0
Удалить дубликаты по Description
    #38866436
sqlbot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е способ удалить в поле description безнадежен ?..
Вот пришла идея, а если сделать так, к примеру сравниваем тайтл, и некий начальный участок поля description думаю к примеру если в description будет 5-6 слов похожи и тайтлы одинаковы, то я думаю 70% это будет дубликат соообщение..
...
Рейтинг: 0 / 0
Удалить дубликаты по Description
    #38866940
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sqlbotЯ думаю она удаляет то что нужно, но вот дело в том, что там 50к записей, и это реально удалить такой коммандой дубли ?
Т.е мне нужно что бы дубли удалились, но одна версия дубля осталась, т.е не все полностью, а одну запись оставлять. Если это есть в вашем примере это хорошо, но вот время, и сможет ли такой запрос выполниться при условии что в базе 50к постов..

да легко, в результатирующей выборке будут записи дубли по принципу... если скажем дублей два

тоесть 1 ааааа 2 аааа 3 ааааа

то в результате будет

1 ааааа 2 ааааа
1 ааааа 3 ааааа
2 ааааа 3 ааааа ---условия совпадения текста и айдишник правой таблицы должен быть строго больше левой.


можно ещо поиграться, запросом...но я привел лишь идею поиска дублей(тоесть без записей которые надо оставить)
это совпадение текста, а айди строго больше у правой таблицы. поэтому в правой, для дублированого текста никогда не появиться запись, с таким текстом и минимальным айдишником.
...
Рейтинг: 0 / 0
Удалить дубликаты по Description
    #38866947
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sqlbotТ.е способ удалить в поле description безнадежен ?..
Вот пришла идея, а если сделать так, к примеру сравниваем тайтл, и некий начальный участок поля description думаю к примеру если в description будет 5-6 слов похожи и тайтлы одинаковы, то я думаю 70% это будет дубликат соообщение..

и не надо переживать за базу. 50000 тысяч записей... за пару минут у меня база генерировала 200 000 записей, так там использывались хеши и операции со строками длиной до 100 символов - ну тоесть процес генерации одной строки, это не совсем атомарное действие было, а два экрана кода хранимой процедуры. --- создавал тестовое наполнение таблиц двух, притом что одна вставка = по одной вставке в обе таблицы, а потом апдейт внешнего ключа.

так что 50000 текстов стравнить, тем более что основная масса сравнений - уже на первых символах будет видно не совпадение.

но как вариант второй, добавь поле хеш от всего текста. и сделай на нём индекс уникальности :), только хеш строй по принципу
хеш от текста + хеш от текста с дополнительным символом.

и вот это всё, запихни в бинари ...и на нём индекс уникальности.
...
Рейтинг: 0 / 0
Удалить дубликаты по Description
    #38868526
sqlbot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообщем решил проблему, с помощью нескольких запросов + php.. :)
Так как я не суперюзер по работе с бд.. сделал как смог :)
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Удалить дубликаты по Description
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]