SOQL中的IN子句无法按预期工作

时间:2017-01-10 13:14:57

标签: salesforce where-clause soql

代码段1:

Three = instance.Three.AsQueryable().Select(BMapping.expression)

以上代码段按预期工作。

代码段2:

list<string> abc = new list<string>{'a1V44000008TyEEEA0'};  
list<task> t = [ SELECT Id FROM Task WHERE (whatId in :abc or Whoid in :abc)]
system.debug('-->'+t.size());

Snippet2返回一个结果,好像没有WHERE子句一样。 这背后的逻辑是什么,还是任何错误?

1 个答案:

答案 0 :(得分:2)

第二个代码段中的查询将返回whatId WhoId等于nulla1V44000008TyEEEA0的所有任务记录。可能在大多数任务记录中whatIdWhoId为NULL或a1V44000008TyEEEA0

您可以执行:

list<task> t = [ SELECT Id FROM Task WHERE (whatId != NULL or Whoid != NULL)]

检查是否存在whatIdWhoid都不是null的任务。