Следуя за кодом earlier question, я пытаюсь привести в порядок таблицу SQL, содержащую номера телефонов. Мне нужно удалить повторяющиеся номера за строку - не через всю таблицу. Например, моя таблица выглядит следующим образом:Дедупликация данных SQL для каждой строки
| CustomerID | Tel1 | Tel2 | Tel3 | Tel4 | Tel5 | Tel6 |
| Cust001 | 01222222 || 07111111 | 07222222 | 01222222 | NULL |
| Cust002 | 07444444 | 07555555 | 015333333| 07555555 | NULL | NULL |
| Cust003 | 01222222 | 017777777 | 07888888 | 017777777 | 016666666 | 01222222 |
, и я хотел бы, чтобы удалить любое число, которое появляется в два раза или более в той же строке ... так что таблица будет в конечном итоге выглядит как:
| CustomerID | Tel1 | Tel2 | Tel3 | Tel4 | Tel5 | Tel6 |
| Cust001 | 01222222 || 07111111 | 07222222 | NULL | NULL |
| Cust002 | 07444444 | 015333333 | 07555555 | NULL | NULL | NULL |
| Cust003 | 01222222 | 017777777 | 07888888 | 016666666| 013333 | NULL |
Порядок номеров телефонов не имеет значения, если числа указаны в первых столбцах, а любые NULLS - «справа».
SQLFiddle есть здесь - может ли кто-нибудь предложить, как эффективно удалять повторяющиеся значения в строке?
** Примечание: ** Постарайтесь нормализовать таблицу так, чтобы у вас была еще одна таблица 'CustomersPhones':' CustomerId' внешний ключ для таблицы клиентов, 'PhoneNumber' –
В качестве другой примечания, если вы следуете выше, вы можете использовать простые уникальные ограничения, чтобы гарантировать, что вы не сохранили дублирующие номера телефонов для клиентов. – steoleary
Я боюсь, что унаследовал эту структуру таблицы, как это ужасно, и ее изменение невозможно :( – KenD