开发必看!三分钟读懂Salesforce SOQL查询和限制

news2025/5/28 1:00:56

SOQL是支持我们与Salesforce数据库交互的查询语言。开发人员在编写Apex时通常会使用到SOQL,此外,它还允许管理员和开发人员从组织内部检索数据并在导出结果时生成强大的数据报告。

SOQL 查询对于编写代码的开发人员,以及通过使用子句扩展查询功能的管理员来说都是一个强大的工具,可以将一些复杂的数据操作转变为一项简单的任务。

虽然大多数开发人员对如何执行查询有基本的了解,但SOQL可以做的不仅仅是从数据库中检索记录。本篇文章将探讨SOQL查询的构成,以及如何将查询提升到一个新水平。

什么是查询(Query)?

查询的基本语法看起来相对简单,SELECT语句中有几个字段,就有了一个基本查询。我们可以将查询分解为不同的块(通常称为子句),这些块定义应该检索哪些数据,以及应该如何格式化数据。

所有查询都包含一个SELECT子句,这是查询的一部分,用于确定要返回的字段,后面跟着FROM关键字,说明被查询的对象。

WHERE子句

通过提供可以使用AND或OR运算符组合的逻辑运算符,用于筛选出要返回的记录。

TYPEOF子句

用于在引用多态查找时提供要选择的字段,例如查询与特定对象相关的任务。

WITH子句

用于指定附加查询行为;这可能是通过WITH SECURITY_ENFORCED强制执行字段级权限,或者在查询问题时指定数据类别。

ORDER BY 子句

以特定的方式对查询结果进行排序。

GROUP BY 子句

这个子句彻底改变了查询的行为。GROUP BY查询不是返回单个记录作为结果,而是将查询更改为聚合查询,返回基于集合数据集而不是单个行的数据。

关系查询(Relational Queries)

SOQL的另一个强大功能是能够跨越查询中的关系。例如,检索父帐户的名称,检索与某个帐户相关的联系人。

关系查询主要有以下两种类型:

子对父(Child to Parent)

当我们查询子对象时,它们沿着关系树上升,引用父对象的字段。

这些可以上升5个级别,引用祖父、曾祖父等的字段。

这些类型的关系是通过点符号来访问的,关键是要记住它使用的是关系名,对于自定义的关系,关系名称是以__r 结尾

父对子(Parent to Child)

它们沿着关系树向下,引用作为查询记录子对象的记录和字段。

这些查询只能向下一级。也就是说,可以查询一个帐户的联系人,但不能查询与这些联系人相关的记录。

这些是通过SELECT子句中的子查询编写的,FROM是关系名称(例如Contacts或 My_Custom_Objects__r)。

聚合查询(Aggregate Queries)

聚合查询可以把大量复杂的数据集压缩成几行,为你提供所需的准确数据。

根据具体用例,可以使用以下聚合函数:

COUNT() / COUNT(fieldName):计算查询返回的行数。通常与Id字段或其他查找一起使用。

COUNT_DISTINCT(fieldName) :计算查询的唯一非空值的数量。

AVG(fieldName) :根据查询返回的行返回字段的平均值。

MIN(fieldName) :根据查询返回字段的最小值。可以在选项列表中使用,根据选项列表排序顺序返回。

MAX(fieldName) :根据查询返回字段的最大值。可以在选项列表中使用,根据选项列表排序顺序返回。

SUM(fieldName) :根据查询结果返回字段的数字总和。

GROUP BY子句还有两个兄弟子句,可以进一步增强查询能力,同时通过返回各种小计,提供与标准GROUP BY子句相同的数据。

GROUP BY ROLLUP

与多个字段聚合一起使用(例如,计算各阶段的业务机会数量并合计其总额)。

采用聚合查询,并返回每个类别的小计。

包括每个字段组合的分类汇总行。

有最终总计行。

上面的查询将返回以下内容:

GROUP BY CUBE

与多个字段聚合一起使用(例如,计算各阶段的业务机会数量并合计其总额)。

为我们提供分组字段的所有组合的聚合。

包含比GROUP BY ROLLUP更多的信息。

字段排序无关紧要。

用于生成交叉表格报告。

上面的查询将返回以下内容:

通过使用HAVING子句可以进一步筛选这些查询。例如,假设有一个用特定关键字标记联系人的对象,我们希望找到标签为“United Kingdom”、“Salesforce Developer”和“Available”的所有联系人,可以使用以下查询来准确地找到这些联系人。

HAVING子句也可以附加到GROUP BY ROLLUP和GROUP BY CUBE查询中,以进一步自定义返回的确切结果。

Limits和Limitations

SOQL也有自己的限制。对于SOQL查询,这些限制可以根据运行查询的上下文而改变,以下是它的通用限制:

100k字符限制:整个查询(包括所有子句)的长度必须少于100k个字符。

WHERE子句中的字符串限制为4000个字符。这是针对单个字符串,而不是整个WHERE子句。

不超过55个子对父关系。

不超过20个父对子关系。

父对子关系只能在FROM子句中的对象上执行。

可能会在Apex中使用SOQL,Apex对如何使用SOQL有更多限制:

同步进程中最多100个查询

异步进程中最多200个查询

每个进程最多返回50000行

注意:聚合查询也计入此限制,但它们的使用量计算方式不同。查询返回的每1行都计为1行,不管数据是否是从几个记录中聚合的。例如,如果以下查询返回7行“ SELECT COUNT(Id), AccountId FROM Contact GROUP BY AccountId ”,不管统计的联系人数量如何,它只会消耗此限制中的7行。

作者:自由侠部落

文章地址:开发必看!一文读懂Salesforce SOQL查询和限制

本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接

如果文章的内容对你有帮助,欢迎点赞~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/334891.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CK-GW208-EC与汇川PLC配置走EtherCAT通讯指南

CK-GW208-EC这款产品是晨控智能一款工业级 IO-LINK 主站网关,支持 EtherCat 工业协议。可通过以太网接口,对 IO-LINK 从站设备进行控制。CK-GW208-EC 是一款支持标准工业 Ethercat协议的 IO-LINK主站网关,方便用户快速便捷的集成到 PLC 等控制…

GLP-1类药物研发进展-销售数据-上市药品前景分析

据一项2021 年的报告发现,当 GLP-1 类似物用于治疗 2 型糖尿病时,全因死亡率降低了 12%,它们不仅降糖效果显著,同时还兼具减重、降压、改善血脂谱等作用。近几年,随着GLP-1R激动剂类药物市场规模不断增长,美…

Disruptor实战和笔记之二:Disruptor类分析

1 本篇概览通过前文的实战,咱们对Disruptor有了初步认识,借助com.lmax.disruptor.dsl.Disruptor类可以轻松完成以下操作:环形队列初始化指定事件消费者启动消费者线程接下来要面对两个问题:深入了解Disruptor类是如何完成上述操作…

第十四期 | ETC车主收到的诈骗短信原来是黑灰产在搞鬼?

目录 互联网时代,车企的安全挑战 黑灰产的两种攻击方式:撞库攻击&密码爆破攻击 1、撞库攻击: 2、密码爆破攻击 黑灰产变现方式 1、贩卖数据 2、直接变现 3、电信诈骗 防控建议 1、终端加固/H5混淆 2、通信传输安全保障 3、行…

Java知识点细节简易汇总——(7)面向对象编程(高级部分)

一、类变量、静态变量static static访问方式: public class VisitStatic {public static void main(String[] args) {//方法一://类名.类变量名//说明:类变量是随着类的加载而创建,所以即使没有创建对象实例也可以访问System.out.println(A.…

代码随想录NO38 |动态规划——leetcode 343. 整数拆分 96.不同的二叉搜索树

动态规划—leetcode 343. 整数拆分 96.不同的二叉搜索树今天是动态规划第三天的题,动态规划这块儿题目比较多! 343. 整数拆分 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使这些整数的…

拼经济促发展,雨花区脚踏实地将“民生愿景”变为“幸福实景”

2022年,面对国内外复杂的经济形势,我国经济发展依旧保持稳中向好态势。经济增长总体平稳且后续动力强劲,物价涨幅持续可控,结构调整积极推进。经济增长由政策刺激向自主增长有序转变,继续朝着宏观调控的预期方向发展&a…

Linux环境下Redis单机、集群升级部署

目录 前言 一、Redis安装环境准备 二、安装升级Redis 1.Redis升级前准备(首次安装忽略) 2.Redis安装 总结 前言 Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可…

回顾 | .NET MAUI 跨平台应用开发 - 用 .NET MAUI 开发一个无人机应用(下)

点击蓝字关注我们编辑:Alan Wang排版:Rani Sun微软 Reactor 为帮助广开发者,技术爱好者,更好的学习 .NET Core, C#, Python,数据科学,机器学习,AI,区块链, IoT 等技术,将…

七、Linux文件 - main函数参数讲解、代码实现cp指令

目录 1、main函数参数 2.cp指令的使用 3、实现cp指令 3.1实现cp指令-入门版 3.2实现cp指令-进阶版 1、main函数参数 int main(int argc,char *argv[]) {return 0; } C语言规定了main函数的参数只能由2个,一个是argc,一个是argv,并且argc只能是整数&#xff0c…

[Leetcode] 打开转盘锁(BFS求最短路径)

题目链接:https://leetcode.cn/problems/open-the-lock/你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 。每个拨轮可以自由旋转:例如把 9 变为 0,0 变为 9 。每次旋转都只能旋转一个拨轮…

你不会还不知道arrify的内部到底是怎么执行的吧?

作为一个前端工程师,经常会遇见转换成数组的需求,被转换的对象有可能是String、Set()、null、Map()、undefined、或者是数组本身。我们最经常的做法就是写一个arrify函数帮我去进行转换。久而久之因为经常会做不同的项目中遇到同样的需求所以我们通常会把…

WeNet - 初识

文章目录关于 WeNet快速上手识别训练环境准备训练关于 WeNet Production First and Production Ready End-to-End Speech Recognition Toolkit github: https://github.com/wenet-e2e/wenet官方中文说明:https://github.com/wenet-e2e/wenet/blob/main/README_CN.md…

分享宠物店微信小程序制作步骤_宠物店管理系统怎么做

大多数人对于动物医疗专业知识比较匮乏,再加上宠物医疗费用,日常用品都略高,宠物店/宠物医院的前景,再未来依旧可观。 相比于实体店,线上平台无疑有着更广阔的拓客渠道和销售前景,做宠物店/宠物医院小程序…

Java进阶(下篇)

Java进阶(下篇)Java进阶 P387一、IDEA使用与多线程1.概述①idea安装②IDEA常用设置③idea快捷键设置④模板的使用和设置2.程序进程、线程概念3.单核cpu与多核cpu任务执行_ 并行与并发4.多线程优点5.创建多线程方式一:继承Thread类6.线程常用方…

[oeasy]python0078_设置索引颜色_index_color_ansi_控制终端颜色

更多颜色 回忆上次内容 上次 了解了 高亮颜色 91-97 是 高亮 前景色101-107是 高亮 背景色 颜色种类 在原来基础上 增加了一些但也非常有限 还想要 更精细的颜色 有可能吗??🤔 更多颜色 继续深挖 关于 逃逸字符的文档 可以用 索引颜色 …

MyBatis源码概述及运行原理解析(篇一)

🐦MyBatis源码概述及运行原理解析 MyBatis的整体架构分为三层,分别是基础支持层、核心处理层和接口层 🖌 中文注释源码Git地址 🖽架构图 📂源码结构 📁parsing包 🗊parsing包对应基础支持层中…

Matlab论文插图绘制模板第76期—半对数刻度折线图(Semilogx和Semilogy)

在之前的文章中,分享了Matlab双对数刻度折线图的绘制模板: 进一步,再来分享一下半对数刻度折线图的绘制模板。 先来看一下成品效果: 特别提示:Matlab论文插图绘制模板系列,旨在降低大家使用Matlab进行科研…

为什么bitnami 安装的软件进入容器,用户名都是I have no name

文章目录背景原因user 参数的缺陷一### user 参数的缺陷二Docker 官方的解决方案背景 在bitnami 安装的软件进入容器用户名都显示I have no name,这是什么原因呢? 原因 在k8中容器默认好像是以uid1001启动的,可以修改该uid docker 启动的时…

leaflet 实现左卷帘效果 (代码示例045)

第045个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中实现左卷帘效果,这里主要引用了leaflet-side-by-side这个插件,直接调用的话,CSS方面有些问题,需要自行调整一下。 直接复制下面的 vue+leaflet源代码,操作2分钟即可运行实现效果 文章目录 示例效果配…