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

如何用SOQL查询自定义对象中每个客户的最新记录?

实现每个客户对应的最新自定义对象记录的SOQL查询

你的原SQL逻辑存在问题:子查询里用mco1.id = mco2.id关联,本质上只是匹配每条记录自身的创建日期,根本筛选不出每个客户的最新记录。下面提供两种可行的SOQL解决方案:

方法一:分组子查询匹配

先按客户分组获取每个客户的最新创建日期,再匹配主表中对应客户且创建日期等于该最大值的记录:

SELECT Id, Score__c, Client__c, Date__c, CreatedDate
FROM my_custom_object__c
WHERE (Client__c, CreatedDate) IN (
    SELECT Client__c, MAX(CreatedDate)
    FROM my_custom_object__c
    GROUP BY Client__c
)

注:如果同一客户在同一时间有多条记录,这种方法会返回所有符合条件的记录

方法二:窗口函数筛选

利用SOQL支持的窗口函数,给每个客户的记录按创建日期倒序编号,取编号为1的记录(即最新一条):

SELECT Id, Score__c, Client__c, Date__c, CreatedDate
FROM (
    SELECT Id, Score__c, Client__c, Date__c, CreatedDate,
           ROW_NUMBER() OVER(PARTITION BY Client__c ORDER BY CreatedDate DESC) AS rn
    FROM my_custom_object__c
)
WHERE rn = 1

如果需要保留同一客户同一时间的所有最新记录,可以把ROW_NUMBER()换成RANK()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 08:22:04