|
|
|
| Похожие, но не одинаковые. Надо сравнить два поля в каждой записи. Если совпадают последние 7 цифр, вывести имя (это тоже поле записи).
Например, есть запись
id+------name-------------+----phone ---+-----mobile--+
3 | BAJRAMI ARDIAN | 2102638011|6982638011|
========================================
Видно, что сотовый номер повторяет стационарный, если поменять код города 210 на код опeратора - 698. Это ошибка. А т.к. сейчас есть возможность найти правильный телефон, то хотелось бы исправить. Всего записей меньше 2 тыс. Можно это сделать запросом или надо скрипт писать? | |
|
|
|
|
|
|
|
для: elenaki
(14.04.2016 в 16:25)
| | Если правильно понял вопрос нужно сравнить номера без первых трех цифр?
т.е. строковые в мускуле.
SELECT RIGHT('phone', 7);
|
и сравнивать... | |
|
|
|
|
|
|
|
для: vadimka
(14.04.2016 в 17:13)
| | HET. Сравнивать строки напрямую в MySQL нельзя.
SELECT onoma, SUBSTR(`phone`, 4, 7) phone, SUBSTR(`mobile`, 4, 7) mobile FROM pelates WHERE
`phone` NOT LIKE "" AND
`mobile` NOT LIKE "" AND
phone = mobile
|
Так находит, но не всех. Того, что в примере, не находит.
Ага. Вижу, что обрезка не сработала. Т.е в результат-то mysql выдала обрезанные поля, но в выборку попали только те, у которых полное совпадение номеров. | |
|
|
|
|
|
|
|
для: elenaki
(15.04.2016 в 10:07)
| | Вот так вывело 205 из 1805, что похоже на правду.
SELECT onoma, phone, mobile, IF(SUBSTR(`mobile`, 4, 7)= SUBSTR(`phone`, 4, 7), '!!!', '') as attent FROM pelates WHERE
`phone` NOT LIKE "" AND
`mobile` NOT LIKE ""
ORDER BY attent DESC, onoma ASC
|
Вывело всех, конечно, но тех, кто меня интересует - с !!! А уникальных имен и вовсе 120. Закину в Excel и отдам бухгалтерше, пусть исправляет. | |
|
|
|