欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > MySQL 根据 字段包含关键词进行分类

MySQL 根据 字段包含关键词进行分类

2025/2/24 7:16:57 来源:https://blog.csdn.net/liang520521/article/details/144444973  浏览:    关键词:MySQL 根据 字段包含关键词进行分类

为了解决动态关键词匹配的需求,我们需要创建一个关键词表(keywords_table),其中存储关键词和对应的类别。以下是具体的步骤:


1. 创建关键词表

可以用以下 SQL 创建一个简单的关键词表:

CREATE TABLE keywords_table (id INT AUTO_INCREMENT PRIMARY KEY, -- 主键category VARCHAR(50) NOT NULL,     -- 类别名称keyword VARCHAR(255) NOT NULL      -- 关键词
);

2. 插入关键词数据

根据需求插入对应的关键词和类别:

INSERT INTO keywords_table (category, keyword)
VALUES ('类别 A', '关键词1'),('类别 A', '关键词2'),('类别 B', '关键词3'),('类别 B', '关键词4');

3. 示例主表

假设主表为 your_table

CREATE TABLE your_table (id INT AUTO_INCREMENT PRIMARY KEY, -- 主键info VARCHAR(255) NOT NULL         -- 包含描述的字段
);

插入示例数据:

INSERT INTO your_table (info)
VALUES('关键词1,关键词4'),('关键词2'),('关键词3'),('无匹配关键词');

4. 用 JOIN 查询匹配关键词类别

SELECT t.id,t.info,GROUP_CONCAT(DISTINCT k.category) AS 匹配类别 -- 聚合匹配的类别,避免重复
FROM your_table t
LEFT JOIN keywords_table k ON t.info LIKE CONCAT('%', k.keyword, '%') -- 动态匹配关键词
GROUP BY t.id, t.info;

查询结果示例

基于上述数据,查询结果可能如下:

idinfo匹配类别
1关键词1,关键词4类别 A, 类别 B
2关键词2类别 A
3关键词3类别 B
4无匹配关键词NULL

关键点说明

  1. 关键词动态匹配ON t.info LIKE CONCAT('%', k.keyword, '%') 用于动态检测 info 是否包含某个关键词。
  2. 去重类别GROUP_CONCAT(DISTINCT k.category) 保证返回的类别不重复。
  3. 未匹配处理LEFT JOIN 保证即使没有匹配到关键词,your_table 的数据仍会显示,匹配结果为 NULL

优化建议

  • 如果 info 数据非常大,建议在逻辑层(如代码中)拆分匹配,而不是完全依赖 SQL。
  • 可以为 keywords_table.keyword 创建索引以优化性能,特别是关键词较多时:
CREATE INDEX idx_keyword ON keywords_table (keyword);

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词