You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Apex中读取SOQL子查询结果(Account与Contacts数据)

读取SOQL查询结果中的Account及关联Contacts数据

你已经写出了正确的SOQL查询语句,子查询的Contacts数据会自动绑定到对应的Account对象上。下面是优化后的代码,以及如何读取Account和关联Contacts的方法:

优化后的完整代码

// 执行SOQL查询,加载Account及其关联的Contacts
List<Account> myAccts = [SELECT Id, Name, (SELECT Id, Name FROM Contacts) FROM Account];

// 遍历每个Account记录
for(Account acc : myAccts) {
    // 读取当前Account的基础数据
    String accountId = acc.Id;
    String accountName = acc.Name;
    System.debug('当前账户:ID=' + accountId + ',名称=' + accountName);

    // 获取该Account关联的所有Contacts列表
    List<Contact> relatedContacts = acc.Contacts;
    System.debug('当前账户关联的联系人数量:' + relatedContacts.size());

    // 遍历每个关联的Contact记录
    for(Contact con : relatedContacts) {
        String contactId = con.Id;
        String contactName = con.Name;
        System.debug('关联联系人:ID=' + contactId + ',名称=' + contactName);
    }
}

关键说明

  1. 简化循环逻辑:原代码中维护counter并调用myAccts.get(counter)完全没必要,增强for循环的acc变量就是当前迭代的Account实例,直接通过acc访问字段即可。
  2. 访问关联Contacts:SOQL子查询的结果会自动存入Account对象的Contacts属性(这是标准的父子关系名称),类型为List<Contact>,直接通过acc.Contacts就能获取所有关联的联系人。
  3. 遍历联系人:拿到relatedContacts列表后,同样可以用增强for循环遍历每个Contact,读取其字段数据。

内容的提问来源于stack exchange,提问作者SeekerOfKnowledge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 19:59:51