在两次 FULLTEXT 搜索中,我在书名和标签中查找搜索词,得到以下结果:
rScore tScore ID ... 1.235689725827653 0 406 0.928482055664062 2.37063312530518 406 0.928482055664062 0 406 0.453363467548853 0 520 ...
我想拥有什么,所有重复的 ID 都已连接并获得最高分:
rScore tScore ID ... 1.235689725827653 2.37063312530518 406 0.453363467548853 0 520 ...
,但在 GROUP BY 之后,ID 406 被分组在此行列中:
... MATCH_SCORE_TITLE MATCH_SCORE_TAGS ID 0.928482055664062 0 406 0.453363467548853 0 520 ...
如何对所有这些结果进行分组并保持每个 MATCH 的最大值?我知道这已经被问过并且可以通过 JOIN 来完成,但是我没有找到两行的组合,而且我的查询中已经有 JOINS,因为 TITLE 和 TAGS 位于两个不同的表中。
更新: 我有 3 个表,“registrants”(带有要搜索的标题的左表)、“registrants_tags”(左右表之间的关系表)和“tags”(带有要搜索的标签的右表。这是 SQL 查询的简化版本:
SELECT
tags.tag, (Also tried (GROUP_CONCAT(`tags`.`tag`) AS tags)
MAX(MATCH(registrants.story_title) AGAINST('bob')) as rScore,
MAX(MATCH(tags.tag) AGAINST('bob')) as tScore,
registrants.id, registrants.story_title
FROM registrants
LEFT JOIN registrants_tags ON registrants.id = registrants_tags.registrant
LEFT JOIN tags ON registrants_tags.tag = tags.id
WHERE MATCH(registrants.story_title) AGAINST('bob')
OR MATCH(tags.tag) AGAINST('bob')
GROUP BY registrants.id
ORDER BY (rScore + tScore) DESC
这给了我错误消息:“#1247 - 不支持引用'tscore'(引用组函数)”