我有这种情况:
我想检查特定的词,如果它们与某个词相匹配,我将不得不更新该页面的内容并将其链接到该词。但目前我专注于获取部分内容与特定术语相同的内容页面。
这是我需要做的事情的想法,但它不起作用,因为子查询返回多个字段。
我想找到 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 的解决方案,但结果是这样的:
例如,“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/