是否可以将两个不同表中的COALESCE(x,y)与字符串进行匹配?
这是我的要求(不起作用...)
SELECT COALESCE(title_translations.title,collection.title)
LEFT JOIN title_translations ON title_translations.ref_collection=collection.id
WHERE MATCH(COALESCE(title_translations.title,collection.title)) AGAINST("string")
如果我尝试仅匹配collection.title,但不能同时匹配两者,则请求正常运行
https://dev.mysql.com/doc/refman/8.0/en/fulltext-search.html说:
MATCH()带有逗号分隔的列表,该列表为要搜索的列命名。
通过尝试使用COALESCE(),您正在将字符串表达式传递给MATCH(),而不是列标识符。
这不起作用。
发表您的评论:
MATCH(title_translations.title,collection.title)
仍然无法工作,因为您列出的列必须属于一个全文索引,并且每个索引都属于一个表。您无法列出其他表格中的列。另外,如果定义了多列全文索引,则还必须列出定义的列all。
我假设在您的情况下,您为每个表中的单列title
定义了一个全文索引。
您将需要此:
WHERE MATCH(title_translations.title) AGAINST('string')
OR MATCH(collection.title) AGAINST('string')
您必须使用两个匹配的术语来执行此操作,因此您必须在每个术语中重复AGAINST。