使用mysql中的单个关键字从多个表中搜索

时间:2013-06-04 19:07:14

标签: mysql keyword

我有3张桌子

表1-用户:

_______________________
|uid   |   uname      |
|______|______________|
| 1    |  John99      |
| 2    |  Steve12     |
| 3    |  Smith_a     |
| 4    |  Robert.t    |
| 5    |  Williams.a  |
|______|______________|

表2 - 名字:

 _____________________
 |eid   |   fname     |
 |______|_____________|
 |1     |   John      |
 |2     |   Steve     |
 |3     |   Williams  |
 |4     |   Thomas    |
 |5     |   James     |
 |______|_____________|

表3-姓氏

 ____________________
 |eid   |   lname    |
 |______|____________|
 |1     |  Williams  |
 |2     |  George    |
 |3     |  Smith     |
 |4     |  Robert    |
 |5     |  Heart     |
 |___________________|

用户可以使用关键字“will”或“williams”进行搜索。我需要从上面所有3个表中搜索这个关键字,并显示相应关键字的uid,fname和lname。 例如:1。约翰威廉姆斯          威廉姆斯史密斯          5.James Heart

我和'%will%'一样尝试了联合,但结果中返回了重复项。有人可以帮我查询。

感谢。

2 个答案:

答案 0 :(得分:6)

假设eiduid的外键,那么这样的事情应该有效:

select u.uid, f.fname, l.lname
from users u
  inner join firstname f on u.uid = f.eid
  inner join lastname l on u.uid = l.eid
where f.fname like '%will%' or
  l.lname like '%will%'

如果您还需要搜索uname字段,请使用另一个或语句将其添加到where条件。

结果:

UID FNAME     LNAME
1   John      Williams
3   Williams  Smith

答案 1 :(得分:2)

    SELECT uid, uname, fname, lname
    FROM Users
    INNER JOIN firstname
      ON firstname.eid = users.uid
    INNER JOIN lastname
      ON lastname.eid = users.uid
    WHERE uname LIKE '%will%'
      OR fname LIKE '%will%'
      OR lname LIKE '%will%'