我为这个可怕的头衔道歉,我真的无法弄清楚如何用一句话来解释我想要做的事情。
所以我使用laravel和一个名为searchable的模型特征来帮助我创建搜索表格中varchar和text字段的查询。因此,例如,该特征(在我稍微修改之后)创建了您可以在此要点中看到的巨大查询:
https://gist.github.com/Evertt/af025d741b802fc08af3
正如您可以看到该查询底部附近,它只选择相关性得分高于8的记录。现在这是我的问题,我希望MySQL能够实时计算这个数字。我还不知道究竟是怎么回事,但是我只想选择相关分数在所有匹配记录的前80%中的记录......就像那样。
现在,当我尝试将该行更改为HAVING relevance > (MAX(relevance) / 2)
时,就像实验一样,它不起作用。它返回所有匹配记录,相关性分数大于0,这可能意味着它没有按照我想要的方式执行MAX()
函数。
有人可以就如何让HAVING relevance = ...
根据所有相关性得分进行某项计算给我一些指导吗?
答案 0 :(得分:0)
我相信你不能在having子句中使用计算出的列名,你必须在那里使用完整的表达式。 另外,在我看来你的小组也会造成问题。如果你想要所有(不同的)演员为什么不只是按actor.id分组?