我为这个可怕的标题表示歉意,我真的不知道该如何用一句话来解释我要做什么。
因此,我使用laravel和名为searchable的模型特征来帮助我创建查询,以查询表中的varchar和text字段。例如,该特征(在我稍加修改后)创建了一个庞大的查询,您可以在此要点中看到:
https://gist.github.com/Evertt/af025d741b802fc08af3
正如您在该查询底部附近所看到的那样,它仅选择相关分数高于8的记录。这是我的问题,我希望该数字由MySQL实时计算。我还不知道具体如何,但是类似我只想选择在所有匹配记录的前80%百分位数中具有相关性得分的记录。
现在,当我尝试将该行更改为HAVING relevance > (MAX(relevance) / 2)
时,它没有用。它返回的所有相关记录的相关性得分都大于0,这可能意味着它没有按照我想要的方式执行MAX()
函数。
有人可以给我一些指导,让我如何使HAVING relevance = ...
遵循基于所有相关性分数的特定计算吗?
最佳答案
我相信您不能在hading子句中使用计算出的列名,而必须在其中使用完整的表达式。
另外,在我看来,您所在的小组也会引起问题。如果要所有(不同的)演员,为什么不按actors.id分组?
关于php - 如何计算在查询的SELECT部分中生成的列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29447981/