首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Salesforce SOQL中的子查询的排序与限制

Salesforce SOQL中的子查询的排序与限制
EN

Stack Overflow用户
提问于 2011-11-17 10:04:42
回答 3查看 9.7K关注 0票数 8

我试图根据部分匹配检索一个案例的所有者,其中我们选择了与部分匹配匹配的最新案例。

这是我正在尝试的查询:

代码语言:javascript
复制
SELECT User.CustomField__c 
FROM User 
WHERE User.Id IN (
    SELECT OwnerId 
    FROM Case 
    WHERE Case.CaseNumber LIKE '%1026' 
    ORDER BY Case.CreatedDate DESC LIMIT 1)

下面的查询是独立工作的,但作为子查询的一部分似乎并不满意:

代码语言:javascript
复制
SELECT OwnerId 
FROM Case 
WHERE Case.CaseNumber LIKE '%1026' 
ORDER BY Case.CreatedDate DESC LIMIT 1

同样,如果我删除ORDER BYLIMIT,它也能工作:

代码语言:javascript
复制
SELECT User.NVMContactWorld__NVM_Agent_Id__c 
FROM User 
WHERE User.Id IN (
    SELECT OwnerId FROM Case 
    WHERE Case.CaseNumber LIKE '%1026')

SOQL子查询中不允许订单/限制查询吗?

为了澄清这个问题,我所处理的情况是这样的.

Salesforce组织可以为案件编号配置“显示格式”。如果它们选择"4“位数,则会得到以下大小写:

  • 0001
  • 0125
  • 1234
  • 33456

可以重新配置您的案例编号以获得以下的案例编号以及上面的案例编号.

  • 000001
  • 001234
  • 033456

我不想让人们对LIKE的说法感到困惑,问题是001234和1234是不同的情况,所以如果一个客户提供1234并且我找到了两份记录,我想先假设他们是最近的案例。

因此,要么考虑LIKE语句,要么考虑包含('001234', '1234')IN语句

EN

回答 3

Stack Overflow用户

发布于 2011-11-17 15:40:56

ORDER BYLIMIT在子查询中没有意义,因为您没有从子查询返回记录。相反,子查询只构建用于筛选主查询的ID列表。

如果以返回子查询记录的方式使用子查询,则这些子句是可以的。例如,这起作用是:

代码语言:javascript
复制
SELECT Name, 
    (SELECT FirstName, LastName FROM Contacts ORDER BY LastName LIMIT 10) 
FROM Account
票数 1
EN

Stack Overflow用户

发布于 2014-04-23 17:24:57

我认为值得补充的是,由于SOQL的新特性在第一次询问和回答这个问题时是不可用的,从案例中查询的方法现在应该是可行的(可以访问自定义字段)。

特别是,type特性通过多态查找提供对特定类型字段的访问:typeof.htm

值得注意的是,这个特性仍然处于Developer .中。

代码语言:javascript
复制
SELECT 
  TYPEOF Owner
    WHEN User THEN CustomField__c
  END
FROM CASE
票数 1
EN

Stack Overflow用户

发布于 2012-09-24 14:31:09

您是否尝试过将您的查询转换为类似于此的内容?

代码语言:javascript
复制
SELECT OwnerId, (select id from user)
    FROM Case 
    WHERE Case.CaseNumber LIKE '%1026' 
    ORDER BY Case.CreatedDate DESC LIMIT 1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8165287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档