0

所以搜索就像'Ozzie Smith'

第一个表有 (username, fname, lname) = osmith, ozzie, smith

第二个表有 (username, team) = osmith, cardinals

我需要连接第一个表中的名字和姓氏列,通过第二个表上的用户名加入它并返回团队名称。

我一直在尝试和尝试......大脑融化了。我需要你的帮助!

谢谢!

4

3 回答 3

2

由于它是 MySQL,因此您需要使用CONCAT,而不是+符号。我还添加了一个LOWER()函数来避免大写字母不匹配问题:

select team
from table1
join table2 on table2.username = table1.username
where lower(concat(fname,' ',lname)) like lower('%Ozzie Smith%')
于 2013-08-16T17:10:20.033 回答
1

You're probably doing something like

WHERE fname LIKE '%Ozzie Smith%'

which will not work. fname will contain only Ozzie, and will never match against Ozzie Smith. It would also not match if the user enters Smith, Ozzie, or any other dual-name variant. You'll have to preprocess the search terms and do something like

WHERE (fname LIKE '%Ozzie%') or (fname LIKE '%Smith%')
   OR (lname LIKE '%ozzie%') or (lname LIKE %Smith%')

This will get VERY painful as the number of search terms and fields being search goes up. You'd be better off using a FULLTEXT index, where it'll be a simple matter of

WHERE MATCH(fname, lname) AGAINST ('Ozzie Smith')
于 2013-08-16T17:19:25.103 回答
0

Why doesn't this work?

select
  lname + ', ' + fname as playerName
  , team as teamName
from table1
join table2 on table2.username = table1.username

Update:

where (fname + ' ' + lname) like '%Ozzie Smith%'
于 2013-08-15T22:03:00.093 回答