我正在尝试解决仅删除与两个条件匹配的行的问题,每个条件都是一个 id 列表。现在这些 Id 是成对出现的,如果要删除的项目有一个,那么它必须有第二个,所以只使用两个 in 子句是行不通的。我想出了两个解决方案。
1)使用两个 in 子句,然后遍历项目并检查有问题的两个 id 是否出现在正确的配对中。
IE
for(Object__c obj : [SELECT Id FROM Object__c WHERE Relation1__c in :idlist1 AND Relation2__c in:idlist2]){
if(preConstructedPairingsAsString.contains(''+obj.Relation1__c+obj.Relation2__c)){
listToDelete.add(obj);
}
}
2)遍历 id 并构建一个公认的长查询。
我喜欢第二个选择,因为我只得到我需要的项目,并且可以将列表放入删除,但我知道 salesforce 与 SOQL 查询挂断。第二个选项有惩罚吗?构建和查询长字符串或获取比必要更多的对象并过滤更好?