mysql - SQL WHERE 使用 LIKE 并与字段进行比较

标签 mysql sql

我有这种情况:

我想检查特定的词,如果它们与某个词相匹配,我将不得不更新该页面的内容并将其链接到该词。但目前我专注于获取部分内容与特定术语相同的内容页面。

这是我需要做的事情的想法,但它不起作用,因为子查询返回多个字段。

我想找到 WHERE m.module_content 与我拥有的任何条款相似,但它应该与所有条款核对。

SELECT m.module_termid, t.term_name, m.module_name, m.module_content
FROM modules m
JOIN terms t ON m.module_termid = t.term_id
WHERE m.module_content LIKE  '%' || (SELECT term_name FROM terms) ||  '%'

module_content 有 html 格式的文本,所以最终我需要做的就是,如果它匹配一个术语但它还不是链接,我将添加一个指向该特定术语的链接。

在这里最好的选择是什么? (顺便说一句,我正在使用 mysql)

给你一个预期结果的例子:

条款:id:1,名称:hello 模块:id:1,内容:

Hello World

我希望 id 为 1 的模块被调出,因为它包含某处名称为“hello”的内容

更新:

尝试了 Pablo 的解决方案,但结果是这样的:

enter image description here

例如,“Ray Davis”与术语“Float”毫无关系,因此不应该出现。

最佳答案

我认为您只需要将JOIN 条件更改为如下内容:

SELECT m.module_termid, t.term_name, m.module_name, m.module_content
  FROM modules m
  JOIN terms t ON (m.module_content LIKE  '%' || t.term_name ||  '%')

话虽如此,这可能效率很低。考虑为此操作使用FULL TEXT INDEX INSTEAD

关于mysql - SQL WHERE 使用 LIKE 并与字段进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8007708/

相关文章:

php - 准备好的语句不返回结果

mysql - 如何显示所有用户定义的变量(MySQL)

sql - 如何合并多个 SELECT 结果?

mysql - dyld : Library not loaded:/usr/local/opt/unixodbc/lib/libodbc. 2.dylib

php - 正确检查 MySQLi OOP 错误

php - 如何在 PHP 中添加好友/解除好友功能?

sql - 如何有效地从 DB2 中的表中删除所有行

mysql - 我无法找到 mysql 代码的错误

php - Codeigniter 迁移以更改表

SQLite INSERT - 重复键更新 (UPSERT)