我正在努力在MYSQL中构建一个查询,通过它我可以搜索表中的firstName和lastName列,这些列可以返回几乎匹配它的所有记录.
就像我想搜索一个名字一样,Aditya Kumar Sharma和我的桌子包含这样的东西:
ID firstName lastName
1 Jack Mathews
2 Aditya Singh
3 James Hopes
4 Aditya Kumar Sharma
5 Adityahappy Singh
现在我想要在firstName和lastName列中包含任何这些Aditya或Kumar或Sharma的所有记录,这意味着我需要在结果集中包含以下记录:
ID firstName lastName
2 Aditya Singh
4 Aditya Kumar Sharma
5 Adityahappy Singh
任何人都可以提供一些线索,如何完成它.如果最匹配的记录出现在顶部会更令人愉悦,那就是:
ID firstName lastName
4 Aditya Kumar Sharma
来自结果集,因为它完全匹配查询字符串.
编辑:我正在为我的数据库使用InnoDB引擎,所以FullText不能解决这个问题,有没有其他方法或我被迫切换我的数据库引擎?
解决方法:
我认为FULLTEXT搜索会起作用
SELECT *,
MATCH ( `FirstName`, `Lastname`)
AGAINST ('+name +middle_name +lastname' IN BOOLEAN MODE) as `rel`
FROM `table`
WHERE MATCH ( `FirstName`, `Lastname`)
AGAINST ('+name +middle_name +lastname' IN BOOLEAN MODE)
ORDER BY `rel` DESC
标签:mysql,sql
来源: https://codeday.me/bug/20190621/1250434.html