Loading

SOQL WHERE 句での項目間比較

公開日: May 28, 2026
説明
※この記事は英語版を翻訳しており、一部機械翻訳を含むため内容は後日更新される可能性があります。最新の内容は英語版を参照してください。表示言語は画面右下の言語名から切り替えられます。

WHERE 句で同じオブジェクトの 2 つの項目を比較してクエリを実行したいのですが、WHERE 句の条件の右側にある項目を使用できません。
List<user> users = [SELECT Id,name FROM User WHERE (FirstName != Lastname)];
このクエリを実行すると "System.QueryException: unexpected token: 'Lastname' " (予期しないトークン) が返されます。
解決策


Salesforce では、SOQL クエリで項目間の直接比較はできません。

項目を比較して (true や false などの) 値を返す式項目を作成して WHERE 句で使用すると、これを実現できます。

上記のクエリの場合、テキスト型の値を返す式項目 (例: NameCompare) を次の式で User オブジェクトに作成できます。

IF(User.FirstName != User.LastName, 'true', 'false')

クエリは次のようになります。

List<User> Users = [SELECT id, name FROM User where NameCompare = 'true'];

レポートでこれを実行できるようになりました。この機能は Spring '20 リリースで実装されました。
参照: 項目間の検索条件を使用した項目の比較によるレポートの絞り込み
 

その他のリソース

IdeaExchange の Field-to-Field filters for SOQL へ投票とコメントをしてください。

ナレッジ記事番号

000386076

 
読み込み中
Salesforce Help | Article