所以搜索就像'Ozzie Smith'
第一张表有(用户名,fname,lname)= osmith,ozzie,smith
第二个表有(用户名,团队)= osmith,cardinals
我需要连接第一个表中的名字和姓氏列,然后在第二个表上按用户名加入,并返回团队名称。
我一直在努力尝试......大脑融化了。我需要你的帮助!
谢谢!
答案 0 :(得分:2)
由于它是MySQL,因此您需要使用CONCAT
,而不是+
符号。我还添加了LOWER()
函数以避免大写字母不匹配问题:
select team
from table1
join table2 on table2.username = table1.username
where lower(concat(fname,' ',lname)) like lower('%Ozzie Smith%')
答案 1 :(得分:1)
你可能正在做类似
的事情WHERE fname LIKE '%Ozzie Smith%'
哪个不行。 fname
仅包含Ozzie
,永远不会与Ozzie Smith
匹配。如果用户输入Smith, Ozzie
或任何其他双名变体,它也不匹配。您必须预处理搜索字词并执行类似
WHERE (fname LIKE '%Ozzie%') or (fname LIKE '%Smith%')
OR (lname LIKE '%ozzie%') or (lname LIKE %Smith%')
随着搜索条件和搜索字段数量的增加,这将非常痛苦。你最好使用FULLTEXT索引,这将是一个简单的问题
WHERE MATCH(fname, lname) AGAINST ('Ozzie Smith')
答案 2 :(得分:0)
为什么这不起作用?
select
lname + ', ' + fname as playerName
, team as teamName
from table1
join table2 on table2.username = table1.username
更新:
where (fname + ' ' + lname) like '%Ozzie Smith%'