MySQL多列关键词查询报错求助:按分类筛选检索图书多字段内容
正确的多字段模糊查询实现方案
可用的SQL语句
SELECT * FROM book WHERE category = 'Fiction' AND (booktitle LIKE '%King%' OR author LIKE '%King%' OR publisher LIKE '%King%' OR `language` LIKE '%King%');
错误原因说明
你之前的写法不符合SQL语法规范:多个字段不能用逗号连接后共用一个LIKE条件,必须为每个要检索的字段单独编写LIKE匹配逻辑,并用OR连接,表示任意一个字段包含关键词即符合要求。同时要用括号包裹这些OR条件,保证逻辑优先级——先判断字段是否匹配关键词,再和分类筛选条件做“且”判断。
另外注意:language是部分数据库(如MySQL)的保留字,直接使用可能触发语法错误,建议用反引号`将字段名包裹起来。
可选优化建议
- 若数据库数据量较大,
%关键词%这种前后都加通配符的模糊查询会导致字段索引失效,查询速度变慢。如果业务场景允许,可以调整为'King%'(仅后缀模糊匹配)来利用字段索引;或者给需要检索的字段创建全文索引,使用全文检索语法提升效率。
内容的提问来源于stack exchange,提问作者user8015999
相关产品推荐
相关产品推荐

