2013-04-02 3 views
1

Почему это SOQL запрос возвращения MALFORMED_QUERY: unexpected token: наSalesForce SOQL MALFORMED_QUERY

Select id FROM account 
where id = '0012000000I7MkRAAV' or id = '0012000000I7MkRAAV' 
and id = '0012000000I7MkRAAV' 

Изменение "и" на "или" возвращает результат просто отлично:

Select id FROM account 
where id = '0012000000I7MkRAAV' or id = '0012000000I7MkRAAV' 
or id = '0012000000I7MkRAAV' 

Я выполнения запроса в Проводнике Force ,

ответ

4

Вам нужно сгруппировать свои и/или так, чтобы их не было двусмысленно, например.

Select id FROM account where id = '0012000000I7MkRAAV' or (id = '0012000000I7MkRAAV' and id = '0012000000I7MkRAAV') 
+0

Это работает на деле, но я до сих пор не понимаю: почему я должен быть вынужден группировать значения в предложение WHERE. Проблема неоднозначных полей не разрешается таким образом, вам просто нужно явно указывать значения над именем таблицы данных. Есть ли официальная документация по этому поводу? Мне не удалось найти никаких ссылок. –

+1

x или (Y и Z) сильно отличается от (x или y) и Z – superfell

+0

Правда, но я все еще не вижу, что он имеет отношение к MALFORMED_QUERY. Кронштейны влияют только на логику предложения WHERE. Во всяком случае, я использую выше решение в качестве обходного пути. Спасибо за вашу помощь. –

0

Проблема в том, что одна учетная запись не может иметь два идентификатора за одно и то же время. Одна запись объекта имеет только один идентификатор. В этом запросе вы можете использовать только инструкцию OR

+0

Это не поможет. Этот запрос также выполняется отлично: выберите id FROM account, где id = '0012000000I7MkRAAV' и id = '0012000000I7MkRAAV' и id = '0012000000I7MkRAAV'. Он имеет несколько «и». Даже если вы были правы, «MALFORMED_QUERY» не будет возвращено как ошибка. Это указывает на проблему синтаксиса. –

+0

Извините, я не видел, что вы используете один и тот же идентификатор во всех случаях. Я предполагаю, что это поведение, основанное на внутренней реализации SOQL, в любом случае для получения результата в этом случае достаточно одного Id. В чем причина использования того же идентификатора в этом запросе? –

+0

Вышеуказанный запрос является упрощенной версией. Я просто хотел убедиться, что что-то еще не делает проблему. Я знаю, что мне не нужен один и тот же идентификатор несколько раз, но он не должен (или не должен) вызывать MALFORMED_QUERY. –

Смежные вопросы