Нечеткий поиск дубликатов с 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;
Другие вопросы по тегам