Sqlite 为什么下面的查询不能生成最流行公寓的ID和地址?

Sqlite 为什么下面的查询不能生成最流行公寓的ID和地址?,sqlite,max,aggregate-functions,having,Sqlite,Max,Aggregate Functions,Having,我有一个简单的数据库,其中包含一个表中的公寓以及对这些公寓感兴趣的人的ID或另一个表中的ID。我正在尝试使用嵌套查询获取感兴趣的人最多的公寓 select toh.t, toh.o, toh.h from ( select ok.houseid as t, va.houseaddress as o, count ( ok.customerid ) as h from house va inner join is_interested ok on va.houseid

我有一个简单的数据库,其中包含一个表中的公寓以及对这些公寓感兴趣的人的ID或另一个表中的ID。我正在尝试使用嵌套查询获取感兴趣的人最多的公寓

select toh.t, toh.o, toh.h
from (
  select ok.houseid as t, va.houseaddress as o, count ( ok.customerid ) as h
  from house va
    inner join is_interested ok
      on va.houseid = ok.houseid
  group by t
) toh
group by toh.t
  having toh.h = max( toh.h )
;
这不符合我的要求。内部select应该为我获取一个表,其中包含ID、地址,最后是感兴趣的人的ID计数,按公寓ID分组,ID做得很好

因此,问题很可能在于最后两行:

group by toh.t
  having toh.h = max( toh.h )
因为它返回所有可用的公寓,不管有多少人对它们感兴趣。将此更改为

group by toh.t
  having toh.h > 1

为我选择正确的公寓目前最多有2人对所述公寓感兴趣。看起来我不完全理解max函数应该如何工作。count不应该返回一个整数,或者这首先与类型不匹配有关吗?因为它看起来确实如此。

在我看来,它就像你指出的两条线:

group by toh.t
having toh.h = max( toh.h )
具有以下含义:

按toh.t键给我取组 在这些组中,仅显示toh.h值等于组中此字段值最大值的组。如果我阅读正确,情况总是如此,因为toh.t组中只有一个值。
我相信您想要的是在分组之前在所有toh.h上取全局最大值,对吗?

在我看来,这就像您指出的两行:

group by toh.t
having toh.h = max( toh.h )
具有以下含义:

按toh.t键给我取组 在这些组中,仅显示toh.h值等于组中此字段值最大值的组。如果我阅读正确,情况总是如此,因为toh.t组中只有一个值。
我相信您想要的是在分组之前在所有toh.h中取全局最大值,对吗?

您不能像那样返回您想要的最大值。 使用a从感兴趣的用户处获取所有计数,然后加入豪斯:


你不能像那样返回你想要的最大值。 使用a从感兴趣的用户处获取所有计数,然后加入豪斯:


差不多。但我不想显示最大值本身,只想显示基于toh.h是否等于最大值的其他信息。但我不希望显示所述最大值本身,只希望显示基于toh.h是否等于最大值的其他信息。这会引发错误:靠近第1行:靠近选择:语法错误。定义为cte的查询对我来说似乎完全有效,所以我不确定为什么会发生这种情况。在选择之前,我删除了。现在试试。这会引发错误:靠近第1行:靠近选择:语法错误。定义为cte的查询对我来说似乎完全有效,所以我不确定为什么会发生这种情况。在选择之前,我删除了。现在试试看。