【发布时间】:2019-10-16 14:38:20
【问题描述】:
我想在 best() 内的同一查询中使用 count() 的值。有没有办法做到这一点?
我尝试将 count(id) 作为 my_count, best(my_count, 7) 但它给出了错误:ERROR 1054 (42S22): Unknown column 'my_count' in 'field list'
如果我使用greatest(count(id), 7)会增加查询时间吗?
我也可以在 JPA @Query 中做同样的事情吗?
【问题讨论】:
-
您不能在 SELECT 中使用 SELECT 中的别名,我不知道 MySQL 是否会在单个选择中优化多个相同的 COUNT 表达式,但我希望如此。当我真的很担心需要两次相同的表达式时,我将“主”查询变成了子查询,并在包装查询中重复使用别名。像这样:
SELECT my_count, GREATEST(my_count, 7) FROM (SELECT COUNT(*) AS my_count ....) AS mainQ -
@Uueerdo 你真的应该把它作为答案发布......
-
谢谢@Uueerdo。我真的很感激这个答案。但是有没有办法在 JPA 中做到这一点?我是新手。我将在编辑后的问题中添加相关标签。我的坏
-
我认为
GREATEST(COUNT(*), 7)不应该有任何成本。你没有做任何事情两次。 -
@Nick 是的,当我有“我不知道”这样的表达时,我会犹豫。
标签: mysql jpa count aggregate-functions