Сравнение Soundex с подзапросом, разделенным запятыми?
Я выполняю soundex запрос к таблице пользователей. Подзапрос пользователей предоставляется в виде списка строк через запятую.
Я хочу сделать что-то похожее на следующее, но я не могу найти синтаксис записи, чтобы сделать эту работу.
select * from ((Select soundex(concat(fname, lname)) t, * from users)
Union
(Select soundex(fname) t, * from users)
Union
(Select soundex(lname) t, * from users)) xusers
where t in (select soundex([column]) from ('Name 1', 'Name 2', 'Name 3', 'Name N-1', 'Name N'))
Позже я планирую оптимизировать этот запрос, имея таблицу со значениями soundex, сопоставленными с идентификаторами столбцов, однако я не уверен, что теперь могу ссылаться на анонимный столбец, когда мой подзапрос представляет собой список с разделителями-запятыми? Как добавить псевдоним или как преобразовать этот список в список значений soundex для сравнения?
1 ответ
Я смог сделать это, используя временную таблицу, вставляя список во временную таблицу, а затем соединяя временную таблицу с моей таблицей запросов, чтобы получить желаемый результат.
create temporary table searchvalues (name char(250));
insert into searchvalues values ('Name 1'),('Name 2');
select distinct id from users inner join searchvalues on soundex(fname) = soundex(name) or soundex(lname) =soundex(name) or soundex(concat(fname,lname)) = soundex(name);