0

我正在对用户表执行 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 值映射到列 id 的表来优化此查询,但是,我现在不确定当我的子查询是逗号分隔列表时是否可以引用匿名列?如何添加别名,或者如何将此列表转换为 soundex 值列表以进行比较?

4

1 回答 1

0

我能够通过利用一个临时表将列表插入到我的临时表中,然后将临时表与我的查询表连接起来以获得所需的结果来实现这一点。

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);
于 2013-07-18T17:30:41.633 回答