我正在用户表上执行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值列表以执行比较?
答案 0 :(得分: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);