powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подскажите, как убрать дубли
11 сообщений из 11, страница 1 из 1
Подскажите, как убрать дубли
    #38475111
epicfruit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую всех! Подскажите пожалуйста, кто знает, как можно sql-запросом убрать дубли в таблице(данных много).
Ситуация такая:
c1---------------------c2
tovar_id------------- 78,79,80 ,85,86,87,88,89, 78,79,80

в числовой колонке с2 повторяются 78,79,80, а должны значения в одной строке быть все разными. Как можно удалить дубли значений?

Заранее спасибо...
...
Рейтинг: 0 / 0
Подскажите, как убрать дубли
    #38475428
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это одна запись такая? с CSv в поле?
...
Рейтинг: 0 / 0
Подскажите, как убрать дубли
    #38475506
epicfruit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да, это одна строка
...
Рейтинг: 0 / 0
Подскажите, как убрать дубли
    #38475533
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну а раз метод хранения презирает любые установки DB - то и эту задачу надо решать вовсе не средствами SQL.
Или нормализовать этот бред - дубли при этом сами сдохнут.
...
Рейтинг: 0 / 0
Подскажите, как убрать дубли
    #38475552
epicfruit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извиняюсь за дилетантство, но честно говоря не совсем понял о чем Вы в самом начале - "Ну а раз метод хранения презирает любые установки DB..."

В C2 сам интервал записанных данных(чисел) от 70 до 100, может можно их как-то перечислить все в sql-запросе, что-бы просканировать С2 и удалить все значения которые будут повторяться в одной строке? (Возможно я сейчас полную ересь написал, сори))
...
Рейтинг: 0 / 0
Подскажите, как убрать дубли
    #38475560
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
epicfruitИзвиняюсь за дилетантство, но честно говоря не совсем понял о чем Вы в самом начале - "Ну а раз метод хранения презирает любые установки DB..."


Он о первой нормальной форме .
...
Рейтинг: 0 / 0
Подскажите, как убрать дубли
    #38475565
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
epicfruitПриветствую всех! Подскажите пожалуйста, кто знает, как можно sql-запросом убрать дубли в таблице(данных много).
Ситуация такая:
c1---------------------c2
tovar_id------------- 78,79,80 ,85,86,87,88,89, 78,79,80

в числовой колонке с2 повторяются 78,79,80, а должны значения в одной строке быть все разными. Как можно удалить дубли значений?

Заранее спасибо...

если у вас есть какой-нибудь нормальный язык програмирования
(жава, ц#, пхп...) на входе этих строчек и на выходе,
то зачишайте данные в них.

Если хочется делать в СКЛ, и делать это правильно,
то нормализация ваш друг (как уже отметили выше)

Если очень хочется в СКЛ, вам лень делать правильно,
то способ есть -- сложный, и через неестетичную часть тела.
Крайне не советую.
...
Рейтинг: 0 / 0
Подскажите, как убрать дубли
    #38475567
epicfruit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Понял, MasterZiv , спасибо за ссылку...
Ну, что мне дали, с тем и работаю. Там уже не один скрипт подвязан к этой таблице, поэтому поздновато/сложно что либо менять..
Спасибо что разъяснили!!! Помогаете уже ни первый раз!!))
Буду всю БД тогда заново компилировать.. Просто думал, что можно это как-то решить "меньшей кровью"
...
Рейтинг: 0 / 0
Подскажите, как убрать дубли
    #38476087
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
epicfruit,

можно.
создаёте таблицу временную - для первой нормальной
велью=одно число из С2, айди связаной записи(с1) - оба поля составляют первичный ключ

и пишете запроса 2
1)из текущей делает выборку перовго числа из с2 и это дело летит в временую с условием on duplicate ignore

2)апдейт текущей - срезает первое число с запятой.

ну и ганяете их в цикле пока у всех записей с2 не обнулиться.

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

хотя ващето вопрос - а зачем удалять дубли??? я так понимаю что и сдублями все работает.

и раз дубли не нужны, я так понимаю процедура изменения этого поля криво написана - не уничтожает дубли.

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

для пхп
str= explode(',',array_keys(array_flip(implode(','str))));

из строки получаем масив, меняем ключи и значения местами(врезультате дубли схлопываються), получаем масив ключей, клеим в строку через запятую
...
Рейтинг: 0 / 0
Подскажите, как убрать дубли
    #38476123
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
epicfruit БД тогда заново компилировать Это как? О_о
...
Рейтинг: 0 / 0
Подскажите, как убрать дубли
    #38476171
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
epicfruitНу, что мне дали, с тем и работаю. Там уже не один скрипт подвязан к этой таблице, поэтому поздновато/сложно что либо менять..
Ну тогда пишите пользовательскую функцию, которая примет CSV-строку, и возвратит её же, но почищенную от дублей. Т.е. что-то типа (draft):

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create function RemoveDuplicatesFromField (txt text) 
returns text deterministic
begin
create temporary table temp (txt text, index i_txt(txt) unique);
while instr(txt, ',') > 0
  insert ignore into temp (txt) values (substring_index(txt, ',', 2));
  set txt = substring(txt from 1+instr(txt, ','));
end while;
insert ignore into temp (txt) values (txt);
select into @tmp group_concat(txt) from temp;
return @tmp;
end



Ну и тупо

Код: sql
1.
update table set c2 = RemoveDuplicatesFromField(c2);
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подскажите, как убрать дубли
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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