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

Rya*_*n S 5 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) ||  '%'
Run Code Online (Sandbox Code Playgroud)

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

这里最好的选择是什么?(我使用的是mysql btw)

为您举例说明预期结果:

术语:id:1,name:hello Modules:id:1,content:<p> Hello World </ p>

我想提出id为1的模块,因为它包含的内容在某处有一个名为"hello"的术语

更新:

试过Pablo的解决方案,但这是发生的事情:

在此输入图像描述

例如,"雷戴维斯"与术语"浮动"无关,所以不应该出现.

Pab*_*ruz 5

我认为你只需要将你的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 ||  '%')
Run Code Online (Sandbox Code Playgroud)

话虽如此,这可能是非常低效的.考虑使用FULL TEXT INDEX INSTEAD进行此操作.