Salesforce SOQL查询报错MALFORMED_QUERY:绑定变量仅允许在Apex代码中使用
问题原因及修正方案
报错原因
Bind variables only allowed in Apex code 报错的核心是你在独立SOQL中使用了跨对象字段作为子查询过滤条件,这类动态引用仅允许在Apex代码中通过绑定变量实现,原生SOQL不支持该写法。
另外你的需求是拉取每个用户对应的经理用户名,属于同对象自关联的父字段查询,不需要使用嵌套子查询,用SOQL标准的父关系点查询语法即可实现。
正确的SOQL语句
如果你不需要指定字段别名,直接使用默认返回的字段名即可:
SELECT Id, Username, Manager.Username FROM User
如果需要和原SQL逻辑一致,给经理用户名字段指定manager_username别名,可添加as关键字:
SELECT Id, Username, Manager.Username as manager_username FROM User
语法说明
- Salesforce的User对象内置标准
Managerlookup字段,关联到User对象本身,要访问该关联经理的字段,直接使用Manager.字段API名的语法即可,等效于你原SQL中关联子查询的逻辑,没有经理的用户该字段会返回null。 - SOQL中只有查询当前对象关联的子记录列表时,才需要使用
(SELECT 字段 FROM 子关系名)的嵌套子查询语法,父字段查询直接用点号遍历即可。
内容的提问来源于stack exchange,提问作者Maciaz
相关产品推荐
相关产品推荐

