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

时间:2013-04-10 12:13:27

标签: salesforce soql

我有一个简单的SOQL查询:

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

由于两个广告系列成员列表中有联系人,查询结果会返回2条记录。

我还想带回计数为0的第3条记录。有没有办法在SOQL中执行此操作,我不相信有一个可以在select上使用的ISNULL()函数

2 个答案:

答案 0 :(得分:2)

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

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());
}

答案 1 :(得分:0)

您必须在名为“Having”的soql查询中添加其他部分。有一个像Where子句

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

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