mysql - 通过 firstName 和 lastName 列搜索所有相似记录的 SQL 查询

标签 mysql sql

我正在努力在 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 列中包含任何这些 AdityaKumarSharma 的所有记录,这意味着我需要我的结果集中的以下记录:

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 - 通过 firstName 和 lastName 列搜索所有相似记录的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9955463/

相关文章:

mysql - 从条件中排除某些行

mysql - 通过合并名为 luckydraw_weekone、luckydraw_weektwo 的三个表来显示用户表中现有的电子邮件,所有参与者的字段都为电子邮件

php - 如何选择一列中文本较长的行

sql - 如何使用 SQL 显示两个表中的 CREDIT、DEBIT 和 BALANCE?

mysql - 将具有相似但不相同表的数据库合并到一个 MasterDB 中

mysql - 使用 Eclipse 通过 JSP 连接到 MySQL

php - 我可以根据结果数将我的 MySQL 查询重构为一个查询吗?

sql - MySQL "IN"查询中的维护顺序

mysql - 如何在 MYSQL 中通过另一列选择具有 MAX(列值)、PARTITION 的行?

sql - "INNER JOIN"和 "OUTER JOIN"有什么区别?