SOQL查询报错:获取关联联系人超3个的Account信息失败
问题原因与解决办法
你的SOQL查询报错是因为IN子查询必须只返回单个字段,但你在子查询里同时选择了AccountId和Count(Id),这违反了SOQL的语法规则,导致解析失败。
修正后的查询
只需要把子查询中的Count(Id)去掉,保留AccountId即可——我们只需要用这个字段匹配主查询的Account Id:
SELECT Id, Name FROM Account WHERE Id IN ( SELECT AccountId FROM Contact GROUP BY AccountId HAVING Count(Id) > 3 )
额外需求:同时获取关联Contact数量
如果想在查询Account信息的同时,直接拿到每个Account关联的Contact总数,可以改用分组聚合的写法:
SELECT Id, Name, COUNT(Contacts.Id) AS ContactCount FROM Account GROUP BY Id, Name HAVING COUNT(Contacts.Id) > 3
这种写法不需要子查询,直接通过关联Contact并聚合计数,同时过滤出Contact数量大于3的Account。
内容的提问来源于stack exchange,提问作者Goch HM
相关产品推荐
相关产品推荐

