Salesforce SOQL查询返回包括NULL在内的所有值

Salesforce SOQL查询返回包括NULL在内的所有值,salesforce,soql,Salesforce,Soql,我有一个简单的SOQL查询: select Count(ID), CampaignId, Campaign.Name from CampaignMember where CampaignId in ('701U0000000MVoQ', '701U0000000MLFR', '701U0000000MVoL') group by CampaignId, Campaign.Name 查询结果返回2条记录,因为在两个活动成员列表中有联系人 我还想带回第三条记录,其中计数为0。在SOQL中有没有

我有一个简单的SOQL查询:

select Count(ID), CampaignId, Campaign.Name from CampaignMember where CampaignId in ('701U0000000MVoQ', '701U0000000MLFR', '701U0000000MVoL') group by CampaignId, Campaign.Name 查询结果返回2条记录,因为在两个活动成员列表中有联系人


我还想带回第三条记录,其中计数为0。在SOQL中有没有一种方法可以做到这一点,我不相信有一个ISNULL函数可以在select上使用。

您必须在SOQL查询中添加一个称为Having的附加部分。拥有就像一个Where子句

select Count(ID), CampaignId, Campaign.Name 
from CampaignMember 
where CampaignId in ('701U0000000MVoQ', '701U0000000MLFR', '701U0000000MVoL')
group by CampaignId, Campaign.Name 
HAVING COUNT(ID) >0

Having类似于Where子句,但Having子句仅适用于也出现在GROUP BY中的列。

需要聚合查询的特殊原因是什么?一种方法是使用关系,如:

SELECT Id, Name, (SELECT Id FROM CampaignMembers)
FROM Campaign
WHERE Id IN ('701U0000000MVoQ', '701U0000000MLFR', '701U0000000MVoL')
在以后的代码中,可以这样访问它

List<Campaign> campaigns = [Id, Name, (SELECT Id FROM CampaignMembers)
FROM Campaign
WHERE Id IN ('701U0000000MVoQ', '701U0000000MLFR', '701U0000000MVoL')];

for(Campaign c : campaigns){
    System.debug(c.Name + ': ' + c.CampaignMembers.size());
}

拥有只能进一步限制行的数量,您打算如何使用它来扩展行?感谢眼霜,这比我原来的方式更有意义。