WITH filteringExpression
レコードを項目値に基づいて絞り込むことができます。たとえば、カテゴリによって絞り込んだり、ユーザのプロファイルフィードで追跡されている変更を照会して取得したりするには、WITH filteringExpression を使用します。この句 (省略可能) は、SOQL クエリの SELECT ステートメントに追加できます。
FROM 句で指定されたオブジェクトの項目のみをサポートする WHERE 句とは異なり、WITH ではその他の関連条件で絞り込めます。たとえば、WITH 句を使用して、1 つ以上のデータカテゴリグループの分類に基づいて記事を絞り込めます。WITH 句は、次の場合にのみ使用できます。
- カテゴリに基づいてレコードを絞り込む場合。「WITH DATA CATEGORY filteringExpression」を参照してください。
- ユーザプロファイルフィードで追跡されるレコードの変更を照会して取得する場合。『Salesforce のオブジェクトリファレンス』の「Custom Object__Feed」を参照してください。
- Apex コード内で照会する項目またはオブジェクトへのユーザアクセス権限に基づいてレコードを絞り込む場合。『Apex 開発者ガイド』の「WITH SECURITY_ENFORCED を使用した SOQL クエリの絞り込み」を参照してください。
WITH が指定されている場合、クエリは絞り込み条件に一致し、ユーザが参照可能なレコードのみを返します。指定されていない場合、クエリは条件に一致し、ユーザが参照可能なレコードのみを返します。
以下のステートメントでは、絞り込み条件式が太字で強調表示されています。構文は次のセクションで説明します。
- SELECT Title FROM KnowledgeArticleVersion WHERE PublishStatus='online' WITH DATA CATEGORY Geography__c ABOVE usa__c
- SELECT Id FROM UserProfileFeed WITH UserId='005D0000001AamR' ORDER BY CreatedDate DESC, Id DESC LIMIT 20
RecordVisibilityContext の使用
RecordVisibilityContext を使用して、WITH 句を絞り込むこともできます。この機能は、API バージョン 48.0 以降で使用できます。
次に例を示します。
1SELECT Id, RecordVisibility.VisibilityAttribute FROM Account WHERE Id = 'xxx'
2 WITH RecordVisibilityContext (maxDescriptorPerRecord=100, supportsDomains=true, supportsDelegates=true)または、
1SELECT recordId, VisibilityAttribute FROM RecordVisibility WHERE recordId = 'xxx'
2 WITH RecordVisibilityContext (maxDescriptorPerRecord=100, supportsDomains=true, supportsDelegates=true)次の項目は、パラメータとして使用できます。
| 項目 | 説明 | デフォルト |
|---|---|---|
| maxDescriptorPerRecord | レコードごとに返される記述子の最大数。特定レコードの記述子の実際の数がこの値を超えると、そのレコードの「tooManyDescriptors」表示属性が返されます。 |
|
| supportsDomains | 表示サービスに「domain」表示属性の生成を許可するかどうか。 | true |
| supportsDelegates | 表示サービスに「delegate」表示属性の生成を許可するかどうか。 | true |
1 つ以上の項目��必要です。次に示すのは、無効なクエリです。
1SELECT Id, RecordVisibility.VisibilityAttribute FROM Account WHERE Id = 'xxx'
2 WITH RecordVisibilityContext次に示すクエリは有効です。
1SELECT Id, RecordVisibility.VisibilityAttribute FROM Account WHERE Id = 'xxx'
2 WITH RecordVisibilityContext (maxDescriptorPerRecord=100)詳細は、『オブジェクトリファレンス』の「RecordVisibility」を参照してください。