同时搜索2个字段

时间:2010-05-24 09:57:05

标签: database mysql

我有一个名字和姓氏表

firstname    lastname
---------    ---------
Joe          Robertson
Sally        Robert
Jim          Green
Sandra       Jordan

我正在尝试根据包含全名的输入搜索此表。例如:

input: Joe Robert

我考虑过使用

SELECT * FROM tablename WHERE firstname LIKE

但是这个表分别存储了名字和姓氏,所以我不知道在这种情况下如何进行搜索

2 个答案:

答案 0 :(得分:4)

MyISAM

SELECT  *
FROM    mytable
WHERE   MATCH(firstname, lastname) AGAINST ("Joe* Robert*" IN BOOLEAN MODE);

如果您创建FULLTEXT索引,这将运行得更快:

CREATE FULLTEXT INDEX ON mytable (firstname, lastname)

要使查询能够搜索短名称(例如您的Joe),您需要在创建索引之前将变量@@ft_min_word_len设置为1

InnoDB中,您需要拆分搜索字符串:

SELECT  *
FROM    mytable
WHERE   firstname LIKE 'Joe%'
        AND lastname LIKE 'Robert%'

答案 1 :(得分:2)

Quassnoi方法的替代方案:

SELECT  *
FROM    mytable
WHERE   CONCAT(firstname, " ", lastname) = "Joe Robert"