总排计数在10K-100K行范围内。我可以在force.com上使用rand()吗?不幸的是,尽管所有行都有一个唯一的数字标识符,但存在许多差距,而且我经常想从过滤的子集中选择一个随机行。

我怀疑没有特别有效的方法可以做到这一点,但是根本不可能吗?

最终,我要做的就是随机从表(或基于特定过滤器标准的子集)提取一行。

如果Force.com不允许我选择一个随机行,那么我可以查询要选择的行,然后将顺序ID分配给所有行,例如1-1,035,然后在本地选择一个随机数,例如349,然后获得349行?

有帮助吗?

解决方案

不,你不能使用 ORDER BY RAND() 或类似的东西。您可以按真实字段进行排序(可选 NULLS LAST ETC。)。您可以使用限制,by and and and and Min,max,count ...

也许如果您要写更多有关您需要显示随机行的目的...否则出了什么问题 ORDER BY LastModifiedDate DESC LIMIT 1?或选择100行并显示随机行 Math.random()或crypto.getRandomInteger() Modulo 100?

其他提示

您可以使用 SOQL偏移 选择随机记录。

这是您的工作方式:

Integer count = [SELECT COUNT() FROM Account];
Integer rand = Math.floor(Math.random() * count).intValue();
Account a = [SELECT Name FROM Account LIMIT 1 OFFSET :rand];
System.debug(a.name);

您可以尝试这样的事情。

  1. 从0开始添加序列列。
  2. 使用Math.random() - 将返回0到1之间的小数范围。将其乘以100 r 1000以获取整数。

  3. 使用SOQL获取该行选择bar__c,bar_seq_col_C来自foo_c其中bar_seq_col__c =:math.random() * 10

这只是一个示例想法,您可以想到这些行是一个可行的想法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top