database - 同时搜索2个字段

标签 database mysql

我有一张名字和姓氏的表格

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

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

input: Joe Robert

我考虑过使用

SELECT * FROM tablename WHERE firstname LIKE

但是该表单独存储名字和姓氏,所以我不确定在这种情况下如何进行搜索

最佳答案

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%'

关于database - 同时搜索2个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2896083/

相关文章:

mysql - 提高文本性能?

sql - 数据库设计正确实践

MySQL 在一条语句中连接 3 个相关表

PHP mysql_fetch_array() 根本不工作

php - 当用户点击链接时,立即将其转移到特定页面

php MySql QUERY for Friends 关系表帮助

sql-server - 在 iOS 上通过套接字编程连接到 SQL Server

database - 打开 DBF 文件/将其导入 MSAccess 2003

mysql - phpMyAdmin 是否对生产造成安全风险

c# - 从 ASP.NET 应用程序连接到 AWS MySql 数据库时访问被拒绝