我正在尝试使用 MySQL 中的 Like 子句搜索多个字段,但似乎无法返回任何结果。这是我正在使用的查询:
SELECT player_id, 1st_name, last_name, birth_date, nationality, pasition
FROM `people`
WHERE player_id LIKE '%Keyword%'
OR 1st_name LIKE '%Keyword%'
OR last_name LIKE '%Keyword%'
OR birth_date LIKE '%Keyword%'
OR nationality LIKE '%Keyword%'
OR pasition LIKE '%Keyword%'
ORDER BY `people`.`1st_name` ASC LIMIT 0 , 60
关键字是php传递的变量。
最佳答案
您应该为此使用 FULLTEXT 索引。您可以搜索多个列,并且它的运行速度比使用带有通配符的 LIKE 快数百或数千倍。
CREATE FULLTEXT INDEX ft_people ON `people`
(player_id, `1st_name`, last_name, birth_date, nationality, position);
SELECT player_id, 1st_name, last_name, birth_date, nationality, pasition
FROM `people`
WHERE MATCH(player_id, `1st_name`, last_name, birth_date, nationality, position)
AGAINST('+Keyword' IN BOOLEAN MODE)
ORDER BY `people`.`1st_name` ASC LIMIT 0 , 60
参见http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html
请注意,在 MySQL 5.6 之前的版本中,仅 MyISAM 存储引擎支持 FULLTEXT 索引。
关于MySQL 多字段搜索使用 Like 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8555935/