こんにちは、TRYT開発課の成阪です。
Salesforceと連携するプログラムをつくっていた際に、一瞬ハマりました。 小ネタですが、忘れないようにメモとして残しておきます。
結論
COUNT(*)
ではなく、COUNT(fieldname)
は使用できるので、 COUNT(fieldname)
を使用するか、削除できるのであれば ORDER BY
、GROUP BY
を削除しましょう。
発端
データ取得するクエリのSELECT句とLIMIT句だけを変更して、処理対象の総件数を取得したかったのですが、ORDER BYが指定された状態では、エラーとなってしまいました。
-- データ取得 SELECT id, name, FROM Account ORDER BY id DESC LIMIT 10; -- 件数取得(エラー) SELECT COUNT(*) FROM Account ORDER BY id; -- 件数取得(解決パターンA) SELECT COUNT(*) FROM Account; -- 件数取得(解決パターンB) SELECT COUNT(id) FROM Account ORDER BY id;
参考
API バージョン 19.0 以降では、COUNT() と GROUP BY 句は一緒に使用できません。代わりに COUNT(fieldName) を使用します。
COUNT() および COUNT(fieldName) | SOQL および SOSL リファレンス | Salesforce Developers