Нечеткий поиск дубликатов с SQLite
Это мой первый пост и я новичок.
Я пытаюсь извлечь список нечетких дубликатов и таблицу названий компаний, используя SQLite с sqlite3.
Например, для такой компании, как ZtPay, я сейчас использую:
SELECT name FROM tab WHERE name LIKE 'Z_Pay');
SELECT name FROM tab WHERE name LIKE 'Zt_ay');
и т.д... Для учета опечаток.
Моя проблема в том, что если опечаток не будет, я просто выведу оригинальное название компании. В идеале я хотел бы вывести оригинальное имя, только если LIKE обнаружил нечеткий дубликат.
Я знаю, что это очень неправильно, но я хочу что-то вроде:
SELECT name FROM tab WHERE name LIKE 'Z_Pay' IF ATLEAST 2 name LIKE 'Z_Pay'
Заранее благодарим за любую помощь, которую вы можете оказать мне.
1 ответ
Вы можете определить, существует ли более одного имени, посмотрев на min()
а также max()
:
SELECT name
FROM tab
WHERE name LIKE 'Zt_ay%'
group by name
having min(name) <> max(name)
В качестве альтернативы, вы можете использовать count(distinct)
:
SELECT name
FROM tab
WHERE name LIKE 'Zt_ay%'
group by name
having count(distinct name) > 1;