Я просто спрашиваю здесь, каков наилучший подход для дедупликации вашей таблицы в MySQL?
У меня есть образец таблицы с полями id
,name
, lastname
, user_no
, birthday
,percentage
, а потом parent_id
, Что я хочу, это добавить значение на percentage
а также parent_id
поля, основанные на том, какая запись является дубликатом и насколько они похожи.
Я просто прошу подход. Будет ли эффективным проверять каждое поле дважды, чтобы проверить совпадение? Или есть другой способ?
Предполагая, что id
поле уникально для каждой записи, и что первая запись в базе данных с другими подобными parent_id
Прочитайте свою первую запись, сохраните значения ее полей в локальных переменных.
Прочитайте каждую последующую запись в базе данных. Если у него есть parent_id
значение, перейдите к следующей записи.
Сравните поля во вновь прочитанной записи с полями в ранее сохраненном. Если совпадение достаточно, обновите только что прочитанную запись parent_id
а также percentage
поля.
Когда вы достигнете конца базы данных, но не сравните все записи в ней, прочитайте следующую родительскую запись (т.е. во второй раз, вторую запись в базе данных, предполагая, что она не имеет parent_id
набор полей), сохраните значения его полей в переменных сравнения и повторите процедуру, начиная с шага 2.
После прочтения описания проблемы с вашим другой вопрос, похоже, что вы захотите изменить критерии выбора на шаге 4: чтобы найти «лучшие» совпадения, вам не нужно пропускать записи с parent_id
поле установлено, а лучше использовать каждый запись в базе данных, последовательно, в качестве источника сравнения. Это также означает, что вы не захотите пропускать записи на шаге 2 с parent_id
уже установлено — и вы собираетесь читать каждую запись в базе данных N раз, где N это номер строки.
Других решений пока нет …